http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Protobuf/injection_plan.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Protobuf/injection_plan.cs 
b/lang/cs/Source/TANG/Tang/Protobuf/injection_plan.cs
deleted file mode 100644
index d7a30dc..0000000
--- a/lang/cs/Source/TANG/Tang/Protobuf/injection_plan.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-// Generated from: injection_plan.proto
-namespace InjectionPlanProto
-{
-    [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = 
@"InjectionPlan")]
-    public partial class InjectionPlan : global::ProtoBuf.IExtensible
-    {
-        public InjectionPlan() { }
-
-        private string _name;
-        [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name = @"name", 
DataFormat = global::ProtoBuf.DataFormat.Default)]
-        public string name
-        {
-            get { return _name; }
-            set { _name = value; }
-        }
-        private Constructor _constructor = null;
-        [global::ProtoBuf.ProtoMember(2, IsRequired = false, Name = 
@"constructor", DataFormat = global::ProtoBuf.DataFormat.Default)]
-        [global::System.ComponentModel.DefaultValue(null)]
-        public Constructor constructor
-        {
-            get { return _constructor; }
-            set { _constructor = value; }
-        }
-        private Instance _instance = null;
-        [global::ProtoBuf.ProtoMember(3, IsRequired = false, Name = 
@"instance", DataFormat = global::ProtoBuf.DataFormat.Default)]
-        [global::System.ComponentModel.DefaultValue(null)]
-        public Instance instance
-        {
-            get { return _instance; }
-            set { _instance = value; }
-        }
-        private Subplan _subplan = null;
-        [global::ProtoBuf.ProtoMember(4, IsRequired = false, Name = 
@"subplan", DataFormat = global::ProtoBuf.DataFormat.Default)]
-        [global::System.ComponentModel.DefaultValue(null)]
-        public Subplan subplan
-        {
-            get { return _subplan; }
-            set { _subplan = value; }
-        }
-        private global::ProtoBuf.IExtension extensionObject;
-        global::ProtoBuf.IExtension 
global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
-        { return global::ProtoBuf.Extensible.GetExtensionObject(ref 
extensionObject, createIfMissing); }
-    }
-
-    [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = 
@"Subplan")]
-    public partial class Subplan : global::ProtoBuf.IExtensible
-    {
-        public Subplan() { }
-
-        private int _selected_plan = default(int);
-        [global::ProtoBuf.ProtoMember(1, IsRequired = false, Name = 
@"selected_plan", DataFormat = global::ProtoBuf.DataFormat.ZigZag)]
-        [global::System.ComponentModel.DefaultValue(default(int))]
-        public int selected_plan
-        {
-            get { return _selected_plan; }
-            set { _selected_plan = value; }
-        }
-        private readonly 
global::System.Collections.Generic.List<InjectionPlan> _plans = new 
global::System.Collections.Generic.List<InjectionPlan>();
-        [global::ProtoBuf.ProtoMember(2, Name = @"plans", DataFormat = 
global::ProtoBuf.DataFormat.Default)]
-        public global::System.Collections.Generic.List<InjectionPlan> plans
-        {
-            get { return _plans; }
-        }
-
-        private global::ProtoBuf.IExtension extensionObject;
-        global::ProtoBuf.IExtension 
global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
-        { return global::ProtoBuf.Extensible.GetExtensionObject(ref 
extensionObject, createIfMissing); }
-    }
-
-    [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = 
@"Constructor")]
-    public partial class Constructor : global::ProtoBuf.IExtensible
-    {
-        public Constructor() { }
-
-        private readonly 
global::System.Collections.Generic.List<InjectionPlan> _args = new 
global::System.Collections.Generic.List<InjectionPlan>();
-        [global::ProtoBuf.ProtoMember(1, Name = @"args", DataFormat = 
global::ProtoBuf.DataFormat.Default)]
-        public global::System.Collections.Generic.List<InjectionPlan> args
-        {
-            get { return _args; }
-        }
-
-        private global::ProtoBuf.IExtension extensionObject;
-        global::ProtoBuf.IExtension 
global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
-        { return global::ProtoBuf.Extensible.GetExtensionObject(ref 
extensionObject, createIfMissing); }
-    }
-
-    [global::System.Serializable, global::ProtoBuf.ProtoContract(Name = 
@"Instance")]
-    public partial class Instance : global::ProtoBuf.IExtensible
-    {
-        public Instance() { }
-
-        private string _value;
-        [global::ProtoBuf.ProtoMember(1, IsRequired = true, Name = @"value", 
DataFormat = global::ProtoBuf.DataFormat.Default)]
-        public string value
-        {
-            get { return _value; }
-            set { _value = value; }
-        }
-        private global::ProtoBuf.IExtension extensionObject;
-        global::ProtoBuf.IExtension 
global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
-        { return global::ProtoBuf.Extensible.GetExtensionObject(ref 
extensionObject, createIfMissing); }
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Tang.csproj
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Tang.csproj 
b/lang/cs/Source/TANG/Tang/Tang.csproj
deleted file mode 100644
index bc63f18..0000000
--- a/lang/cs/Source/TANG/Tang/Tang.csproj
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-http://www.apache.org/licenses/LICENSE-2.0
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<Project ToolsVersion="12.0" DefaultTargets="Build" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
-  <Import 
Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"
 
Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"
 />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{97DBB573-3994-417A-9F69-FFA25F00D2A6}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Org.Apache.Reef.Tang</RootNamespace>
-    <AssemblyName>Org.Apache.Reef.Tang</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <RestorePackages>true</RestorePackages>
-    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == 
'*Undefined*'">..\..\..</SolutionDir>
-  </PropertyGroup>
-  <Import Project="$(SolutionDir)\Source\build.props" />
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' 
">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    
<OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    
<OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 
'Release|AnyCPU' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    
<OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    
<OutputPath>$(BinDir)\$(Platform)\$(Configuration)\$(RootNamespace)</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Microsoft.Hadoop.Avro">
-      
<HintPath>$(PackagesDir)\Microsoft.Hadoop.Avro.$(AvroVersion)\lib\net40\Microsoft.Hadoop.Avro.dll</HintPath>
-    </Reference>
-    <Reference Include="Newtonsoft.Json">
-      
<HintPath>$(PackagesDir)\Newtonsoft.Json.$(NewtonsoftJsonVersion)\lib\net45\Newtonsoft.Json.dll</HintPath>
-    </Reference>
-    <Reference Include="protobuf-net">
-      
<HintPath>$(PackagesDir)\protobuf-net.$(ProtobufVersion)\lib\net40\protobuf-net.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Annotations\DefaultImplementation.cs" />
-    <Compile Include="Annotations\Inject.cs" />
-    <Compile Include="Annotations\Name.cs" />
-    <Compile Include="Annotations\NamedParameter.cs" />
-    <Compile Include="Annotations\Parameter.cs" />
-    <Compile Include="Annotations\Unit.cs" />
-    <Compile Include="Exceptions\BindException.cs" />
-    <Compile Include="Exceptions\ClassHierarchyException.cs" />
-    <Compile Include="Exceptions\IllegalStateException.cs" />
-    <Compile Include="Exceptions\InjectionException.cs" />
-    <Compile Include="Exceptions\NameResolutionException.cs" />
-    <Compile Include="Exceptions\ParseException.cs" />
-    <Compile 
Include="Formats\AvroConfigurationDataContract\AvroConfiguration.cs" />
-    <Compile 
Include="Formats\AvroConfigurationDataContract\ConfigurationEntry.cs" />
-    <Compile Include="Formats\AvroConfigurationSerializer.cs" />
-    <Compile Include="Formats\ConfigurationFile.cs" />
-    <Compile Include="Formats\ConfigurationModule.cs" />
-    <Compile Include="Formats\ConfigurationModuleBuilder.cs" />
-    <Compile Include="Formats\IConfigurationSerializer.cs" />
-    <Compile Include="Formats\IImpl.cs" />
-    <Compile Include="Formats\IParam.cs" />
-    <Compile Include="Formats\OptionalImpl.cs" />
-    <Compile Include="Formats\OptionalParameter.cs" />
-    <Compile Include="Formats\Provides.cs" />
-    <Compile Include="Formats\RequiredImpl.cs" />
-    <Compile Include="Formats\RequiredParameter.cs" />
-    <Compile Include="Implementations\ClassHierarchy\AbstractNode.cs" />
-    <Compile Include="Implementations\ClassHierarchy\ClassHierarchyImpl.cs" />
-    <Compile Include="Implementations\ClassHierarchy\ClassNodeImpl.cs" />
-    <Compile Include="Implementations\ClassHierarchy\ConstructorArgImpl.cs" />
-    <Compile Include="Implementations\ClassHierarchy\ConstructorDefImpl.cs" />
-    <Compile 
Include="Implementations\ClassHierarchy\NamedParameterNodeImpl.cs" />
-    <Compile Include="Implementations\ClassHierarchy\NodeFactory.cs" />
-    <Compile Include="Implementations\ClassHierarchy\PackageNodeImpl.cs" />
-    <Compile Include="Implementations\ClassHierarchy\ParameterParser.cs" />
-    <Compile 
Include="Implementations\Configuration\ConfigurationBuilderImpl.cs" />
-    <Compile Include="Implementations\Configuration\ConfigurationImpl.cs" />
-    <Compile Include="Implementations\Configuration\Configurations.cs" />
-    <Compile 
Include="Implementations\Configuration\CsConfigurationBuilderImpl.cs" />
-    <Compile Include="Implementations\Configuration\CsConfigurationImpl.cs" />
-    <Compile Include="Implementations\InjectionPlan\Constructor.cs" />
-    <Compile Include="Implementations\InjectionPlan\CsInstance.cs" />
-    <Compile Include="Implementations\InjectionPlan\InjectionFuture.cs" />
-    <Compile Include="Implementations\InjectionPlan\InjectionFuturePlan.cs" />
-    <Compile Include="Implementations\InjectionPlan\InjectionPlan.cs" />
-    <Compile Include="Implementations\InjectionPlan\InjectorImpl.cs" />
-    <Compile Include="Implementations\InjectionPlan\ListInjectionPlan.cs" />
-    <Compile Include="Implementations\InjectionPlan\SetInjectionPlan.cs" />
-    <Compile Include="Implementations\InjectionPlan\Subplan.cs" />
-    <Compile Include="Implementations\Tang\TangFactory.cs" />
-    <Compile Include="Implementations\Tang\TangImpl.cs" />
-    <Compile Include="Interface\IAspect.cs" />
-    <Compile Include="Interface\IClassHierarchy.cs" />
-    <Compile Include="Interface\IConfiguration.cs" />
-    <Compile Include="Interface\IConfigurationBuilder.cs" />
-    <Compile Include="Interface\ICsClassHierarchy.cs" />
-    <Compile Include="Interface\ICsConfigurationBuilder.cs" />
-    <Compile Include="Interface\ICsInternalConfigurationBuilder.cs" />
-    <Compile Include="Interface\IExternalConstructor.cs" />
-    <Compile Include="Interface\IInjector.cs" />
-    <Compile Include="Interface\ITang.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Protobuf\class_hierarchy.cs" />
-    <Compile Include="Protobuf\injection_plan.cs" />
-    <Compile Include="Protobuf\ProtocolBufferClassHierarchy.cs" />
-    <Compile Include="Protobuf\ProtocolBufferInjectionPlan.cs" />
-    <Compile Include="Types\IClassNode.cs" />
-    <Compile Include="Types\IConstructorArg.cs" />
-    <Compile Include="Types\IConstructorDef.cs" />
-    <Compile Include="Types\INamedParameterNode.cs" />
-    <Compile Include="Types\INode.cs" />
-    <Compile Include="Types\IPackageNode.cs" />
-    <Compile Include="Types\ITraversable.cs" />
-    <Compile Include="Util\AbstractMonotonicMultiMap.cs" />
-    <Compile Include="Util\AssemblyLoader.cs" />
-    <Compile Include="Util\GenericType.cs" />
-    <Compile Include="Util\MonotonicHashMap.cs" />
-    <Compile Include="Util\MonotonicHashSet.cs" />
-    <Compile Include="Util\MonotonicMultiHashMap.cs" />
-    <Compile Include="Util\MonotonicMultiMap.cs" />
-    <Compile Include="Util\MonotonicSet.cs" />
-    <Compile Include="Util\MonotonicTreeMap.cs" />
-    <Compile Include="Util\ReflectionUtilities.cs" />
-    <Compile Include="Util\SetValuedKey.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="packages.config" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="$(SourceDir)\Utilities\Utilities.csproj">
-      <Project>{79e7f89a-1dfb-45e1-8d43-d71a954aeb98}</Project>
-      <Name>Utilities</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" 
Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
-  <!-- To modify your build process, add your task inside one of the targets 
below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/IClassNode.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/IClassNode.cs 
b/lang/cs/Source/TANG/Tang/Types/IClassNode.cs
deleted file mode 100644
index 080bc2d..0000000
--- a/lang/cs/Source/TANG/Tang/Types/IClassNode.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System.Collections.Generic;
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface IClassNode : INode
-    {
-        IList<IConstructorDef> GetInjectableConstructors();
-        IConstructorDef GetConstructorDef(IList<IClassNode> args);
-        IList<IConstructorDef> GetAllConstructors();
-
-        void PutImpl(IClassNode impl);
-        ISet<IClassNode> GetKnownImplementations();
-        string GetDefaultImplementation();
-        bool IsUnit();
-        bool IsInjectionCandidate();
-        bool IsExternalConstructor();
-        bool IsImplementationOf(IClassNode inter);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/IConstructorArg.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/IConstructorArg.cs 
b/lang/cs/Source/TANG/Tang/Types/IConstructorArg.cs
deleted file mode 100644
index a754b0a..0000000
--- a/lang/cs/Source/TANG/Tang/Types/IConstructorArg.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface IConstructorArg
-    {
-        string GetName();
-
-        string Gettype();
-
-        bool IsInjectionFuture();
-
-        string GetNamedParameterName();  
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/IConstructorDef.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/IConstructorDef.cs 
b/lang/cs/Source/TANG/Tang/Types/IConstructorDef.cs
deleted file mode 100644
index b5074a2..0000000
--- a/lang/cs/Source/TANG/Tang/Types/IConstructorDef.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface IConstructorDef : IComparable
-    {
-        string GetClassName();
-
-        IList<IConstructorArg> GetArgs();
-
-        bool IsMoreSpecificThan(IConstructorDef def);
-
-        bool TakesParameters(IList<IClassNode> paramTypes);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/INamedParameterNode.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/INamedParameterNode.cs 
b/lang/cs/Source/TANG/Tang/Types/INamedParameterNode.cs
deleted file mode 100644
index a92ded6..0000000
--- a/lang/cs/Source/TANG/Tang/Types/INamedParameterNode.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface INamedParameterNode : INode
-    {
-        string GetDocumentation();
-
-        string GetShortName();
-
-        string[] GetDefaultInstanceAsStrings();
-
-        string GetSimpleArgName();
-
-        string GetFullArgName();
-
-        bool IsSet();
-
-        bool IsList();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/INode.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/INode.cs 
b/lang/cs/Source/TANG/Tang/Types/INode.cs
deleted file mode 100644
index dc8b55c..0000000
--- a/lang/cs/Source/TANG/Tang/Types/INode.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface INode : IComparable<INode>, ITraversable<INode> 
-    {        
-        string GetName();
-
-        string GetFullName();
-
-        bool Contains(string key);
-
-        INode Get(string key);
-
-        INode GetParent();
-
-        void Add(INode node);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/IPackageNode.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/IPackageNode.cs 
b/lang/cs/Source/TANG/Tang/Types/IPackageNode.cs
deleted file mode 100644
index 9c4e0e4..0000000
--- a/lang/cs/Source/TANG/Tang/Types/IPackageNode.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface IPackageNode : INode
-    {
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Types/ITraversable.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Types/ITraversable.cs 
b/lang/cs/Source/TANG/Tang/Types/ITraversable.cs
deleted file mode 100644
index cd7c3c8..0000000
--- a/lang/cs/Source/TANG/Tang/Types/ITraversable.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System.Collections.Generic;
-
-namespace Org.Apache.Reef.Tang.Types
-{
-    public interface ITraversable<T> where T : ITraversable<T>
-    {
-        ICollection<T> GetChildren();
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/AbstractMonotonicMultiMap.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/AbstractMonotonicMultiMap.cs 
b/lang/cs/Source/TANG/Tang/Util/AbstractMonotonicMultiMap.cs
deleted file mode 100644
index 3019d93..0000000
--- a/lang/cs/Source/TANG/Tang/Util/AbstractMonotonicMultiMap.cs
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public abstract class AbstractMonotonicMultiMap<K, V> : 
ICollection<KeyValuePair<K, V>>
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(AbstractMonotonicMultiMap<K, V>));
-
-        private readonly ReaderWriterLockSlim _lock = new 
ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
-
-        private IDictionary<K, ISet<V>> map;
-
-        private int size = 0;
-
-        public AbstractMonotonicMultiMap(IDictionary<K, ISet<V>> map)
-        {
-            this.map = map;
-        }
-
-        public ICollection<K> Keys
-        {
-            get { return map.Keys; }
-        }
-
-        public int Count
-        {
-            get { return size; }
-        }
-
-        public bool IsReadOnly
-        {
-            get { throw new NotImplementedException(); }
-        }
-
-        public void Add(K key, V val)
-        {
-            _lock.EnterWriteLock();
-            try
-            {
-                ISet<V> vals;
-                map.TryGetValue(key, out vals);
-
-                if (vals == null)
-                {
-                    vals = new MonotonicHashSet<V>();
-                    map.Add(key, vals);
-                }
-                vals.Add(val);
-                size++;
-            }
-            finally
-            {
-                if (_lock.IsWriteLockHeld)
-                {
-                    _lock.ExitWriteLock();
-                }
-            }
-        }
-
-        public ISet<V> GetValuesForKey(K key)
-        {
-            _lock.EnterReadLock();
-            try
-            {
-                ISet<V> ret;
-                map.TryGetValue(key, out ret);
-                if (ret == null)
-                {
-                    return new MonotonicHashSet<V>();
-                }
-                return ret;
-            }
-            finally
-            {
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-        }
-
-        public bool Contains(K key, V val)
-        {
-            _lock.EnterReadLock();
-            try
-            {
-                ISet<V> vals;
-                map.TryGetValue(key, out vals);
-
-                if (vals != null)
-                {
-                    return vals.Contains(val);
-                }
-                return false;
-            }
-            finally
-            {
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-        }
-
-        public bool Add(KeyValuePair<K, V> e)
-        {
-            Add(e.Key, e.Value);
-            return true;
-        }
-
-        public bool AddAll(ICollection<KeyValuePair<K, V>> c) // where T : 
KeyValuePair<K, V>
-        {
-            bool ret = false;
-            foreach (KeyValuePair<K, V> e in c) 
-            {
-                Add(e);
-                ret = true;
-            }
-            return ret;
-        }
-
-        public void Clear()
-        {
-            throw new NotSupportedException("MonotonicMultiMap cannot be 
cleared!");
-        }
-
-        public bool Contains(object o) 
-        {
-            KeyValuePair<K, V> e = (KeyValuePair<K, V>)o;
-            return Contains((K)e.Key, (V)e.Value);
-        }
-
-        public bool ContainsAll<T>(ICollection<T> c) 
-        {
-            foreach (object o in c) 
-            {
-                if (!Contains(o)) 
-                { 
-                    return false; 
-                }
-            }
-            return true;
-        }
-
-        public bool IsEmpty()
-        {
-            return size == 0;
-        }
-
-        public ISet<V> Values() 
-        {
-            _lock.EnterReadLock();
-
-            try
-            {
-                ISet<V> s = new HashSet<V>();
-                foreach (KeyValuePair<K, V> e in this)
-                {
-                    s.Add(e.Value);
-                }
-                return s;
-            }
-            finally
-            {
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-        }
-
-        public int Size()
-        {
-            return size;
-        }
-
-        public bool ContainsKey(K k)
-        {
-            _lock.EnterReadLock();
-
-            try
-            {
-                if (map.ContainsKey(k))
-                {
-                    return (GetValuesForKey(k).Count != 0);
-                }
-                return false;
-            }
-            finally 
-            {                
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-        }
-
-        void ICollection<KeyValuePair<K, V>>.Add(KeyValuePair<K, V> item)
-        {
-            throw new NotImplementedException();
-        }
-
-        public void CopyTo(KeyValuePair<K, V>[] array, int arrayIndex)
-        {
-            throw new NotImplementedException();
-        }
-
-        public bool Remove(KeyValuePair<K, V> item)
-        {
-            throw new NotImplementedException();
-        }
-
-        public bool Contains(KeyValuePair<K, V> item)
-        {
-            throw new NotImplementedException();
-        }
-
-        public IEnumerator<KeyValuePair<K, V>> GetEnumerator()
-        {
-            _lock.EnterReadLock();
-
-            try
-            {
-                return map.SelectMany(kvp => kvp.Value, (kvp, v) => new 
KeyValuePair<K, V>(kvp.Key, v)).GetEnumerator();
-            }
-            finally
-            {
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-        }
-
-        System.Collections.IEnumerator 
System.Collections.IEnumerable.GetEnumerator()
-        {
-            throw new NotImplementedException();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/AssemblyLoader.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/AssemblyLoader.cs 
b/lang/cs/Source/TANG/Tang/Util/AssemblyLoader.cs
deleted file mode 100644
index 8f9175c..0000000
--- a/lang/cs/Source/TANG/Tang/Util/AssemblyLoader.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class AssemblyLoader
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(AssemblyLoader));
-
-        public IList<Assembly> Assemblies { get; set; }
-
-        public AssemblyLoader(string[] files)
-        {
-            Assemblies = new List<Assembly>();
-            foreach (var a in files)
-            {
-                Assemblies.Add(Assembly.Load(a));
-            }
-        }
-
-        public Type GetType(string name)
-        {           
-            Type t = Type.GetType(name);
-            if (t == null)
-            {
-                foreach (var a in Assemblies)
-                {
-                    t = a.GetType(name);
-                    if (t != null)
-                    {
-                        return t;
-                    }
-                }
-
-                foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
-                {
-                    t = a.GetType(name);
-                    if (t != null)
-                        break;
-                }
-            }
-
-            if (t == null)
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ApplicationException("Not able to get Type from the name provided: " + name), 
LOGGER);
-            }
-            return t;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/GenericType.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/GenericType.cs 
b/lang/cs/Source/TANG/Tang/Util/GenericType.cs
deleted file mode 100644
index d6a4ea0..0000000
--- a/lang/cs/Source/TANG/Tang/Util/GenericType.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class GenericType<T>
-    {
-        public static readonly GenericType<T> Class = null;
-
-        public Type TypeT 
-        {
-            get { return typeof(T); }
-        }
-
-        public override bool Equals(object obj)
-        {
-            GenericType<T> other = obj as GenericType<T>;
-            if (other == null)
-            {
-                return false;
-            }
-
-            return TypeT == other.TypeT;
-        }
-
-        public override int GetHashCode()
-        {
-            return TypeT.GetHashCode();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicHashMap.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicHashMap.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicHashMap.cs
deleted file mode 100644
index 0d1deb5..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicHashMap.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicHashMap<T, U> : Dictionary<T, U>
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MonotonicHashMap<T, U>));
-
-        public new void Add(T key, U value)
-        {
-            U old;
-            TryGetValue(key, out old);
-            if (old != null)
-            {
-                var ex = new ArgumentException("Attempt to re-add: [" + key + 
"] old value: " + old + " new value " + value);
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-            }
-            base.Add(key, value);
-        }
-
-        public void AddAll(IDictionary<T, U> m) 
-        {
-            foreach (T t in m.Keys) 
-            {
-                if (ContainsKey(t)) 
-                {
-                   U old;
-                   m.TryGetValue(t, out old);
-                   Add(t, old); // guaranteed to throw.
-                }
-            }
-            foreach (T t in m.Keys) 
-            {
-                U old;
-                m.TryGetValue(t, out old);
-                Add(t, old);
-            }
-        }
-
-        public bool IsEmpty()
-        {
-            return Count == 0;
-        }
-
-        public U Get(T key)
-        {
-            U val;
-            TryGetValue(key, out val);
-            return val;
-        }
-
-        public new void Clear() 
-        {
-            throw new NotSupportedException();
-        }
-
-        public new bool Remove(T key)
-        {
-            throw new NotSupportedException();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicHashSet.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicHashSet.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicHashSet.cs
deleted file mode 100644
index 20706ef..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicHashSet.cs
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicHashSet<T> : HashSet<T>
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MonotonicHashSet<T>));
-        private readonly ReaderWriterLockSlim _lock = new 
ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
-
-        public MonotonicHashSet()
-        {           
-        }
-
-        public MonotonicHashSet(IEnumerable<T> collection)
-            : base(collection)
-        {
-        }
-
-        public MonotonicHashSet(T[] collection)
-            : base(collection.ToList())
-        {
-        }
-
-        public new bool Add(T e)
-        {
-            _lock.EnterWriteLock();
-
-            try
-            {
-                if (Contains(e))
-                {
-                    var ex = new ArgumentException("Attempt to re-add " + e
-                                                   + " to MonotonicSet!");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-                return base.Add(e);
-            }
-            finally
-            {
-                if (_lock.IsWriteLockHeld)
-                {
-                    _lock.ExitWriteLock();
-                }
-            }
-        }
-
-        public bool AddAll(ICollection<T> c)
-        {
-            _lock.EnterWriteLock();
-            try
-            {
-                foreach (T t in c)
-                {
-                    if (Contains(t))
-                    {
-                        var ex = new ArgumentException("Attempt to re-add " + t
-                                                       + " to MonotonicSet!");
-                        
Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, LOGGER);
-                    }
-                    base.Add(t);
-                }
-            }
-            finally
-            {
-                if (_lock.IsWriteLockHeld)
-                {
-                    _lock.ExitWriteLock();
-                }
-            }
-            return c.Count != 0;
-        }
-
-        public bool ContainsAll(ICollection<T> c)
-        {
-            _lock.EnterReadLock();
-
-            try
-            {
-                foreach (T t in c)
-                {
-                    if (!Contains(t))
-                    {
-                        return false;
-                    }
-                }
-            }
-            finally
-            {
-                if (_lock.IsReadLockHeld)
-                {
-                    _lock.ExitReadLock();
-                }
-            }
-            return true;
-        }
-
-        public new void Clear() 
-        {
-            Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
NotSupportedException("Attempt to clear MonotonicSet!"), LOGGER);
-        }
- 
-        public bool Remove(object o) 
-        {
-            Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
NotSupportedException("Attempt to remove " + o + " from MonotonicSet!"), 
LOGGER);
-            return false;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicMultiHashMap.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicMultiHashMap.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicMultiHashMap.cs
deleted file mode 100644
index cc039aa..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicMultiHashMap.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System.Collections.Generic;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicMultiHashMap<K, V> : AbstractMonotonicMultiMap<K, V> 
-    {
-        public MonotonicMultiHashMap() : base(new MonotonicHashMap<K, 
ISet<V>>())
-        {
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicMultiMap.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicMultiMap.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicMultiMap.cs
deleted file mode 100644
index 50d4c6a..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicMultiMap.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-using System.Collections.Generic;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicMultiMap<K, V> : AbstractMonotonicMultiMap<K, V> 
-    {
-        public MonotonicMultiMap() : base(new MonotonicTreeMap<K, ISet<V>>())
-        {
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicSet.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicSet.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicSet.cs
deleted file mode 100644
index 2d52d0f..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicSet.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicSet<T> : SortedSet<T>
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MonotonicSet<T>));
-
-        //private static readonly long serialVersionUID = 1L;
-        public MonotonicSet() : base()
-        {
-        }
-
-        //public MonotonicSet(SortedSet<T> c) : base(c.Comparer)
-        //{
-        //    AddAll(c);
-        //}
-
-        public MonotonicSet(ICollection<T> c)
-            : base(c)
-        {
-        }
-
-        public MonotonicSet(IComparer<T> c)
-            : base(c)
-        {
-        }
-
-        public new bool Add(T e) //TODO
-        {
-            if (this.Contains(e))
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ArgumentException("Attempt to re-add " + e
-                    + " to MonotonicSet!"), LOGGER);
-            }
-            return base.Add(e);
-        }
-
-        public bool AddAll(ICollection<T> c)
-        {
-            foreach (T t in c)
-            {
-                this.Add(t);
-            }
-            return c.Count != 0;
-        }
-
-        public bool ContainsAll(ICollection<T> c)
-        {
-            foreach (T t in c)
-            {
-                if (!this.Contains(t))
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-
-        public bool AddAllIgnoreDuplicates(ICollection<T> c) 
-        {
-            bool ret = false;
-            foreach (T t in c) 
-            {
-                if (!Contains(t)) 
-                {
-                    Add(t);
-                    ret = true;
-                }
-            }
-            return ret;
-        }
-
-        public override void Clear() 
-        {
-            Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
NotSupportedException("Attempt to clear MonotonicSet!"), LOGGER);
-        }
-
-        public bool Remove(Object o)
-        {
-            Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
NotSupportedException("Attempt to remove " + o
-                + " from MonotonicSet!"), LOGGER);
-            return false;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/MonotonicTreeMap.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/MonotonicTreeMap.cs 
b/lang/cs/Source/TANG/Tang/Util/MonotonicTreeMap.cs
deleted file mode 100644
index 623f249..0000000
--- a/lang/cs/Source/TANG/Tang/Util/MonotonicTreeMap.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-using System.Threading;
-using Org.Apache.Reef.Utilities.Logging;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class MonotonicTreeMap<TKey, TVal> : SortedDictionary<TKey, TVal> 
-    {
-        private readonly ReaderWriterLockSlim _lock = new 
ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
-
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(MonotonicTreeMap<TKey, TVal>));
-
-        public new void Add(TKey key, TVal value) 
-        {
-            _lock.EnterWriteLock();
-            try
-            {
-                TVal val;
-                if (base.TryGetValue(key, out val))
-                {
-                    var ex = new ArgumentException("Attempt to re-add: [" + key
-                                                   + "]\n old value: " + val + 
" new value " + value);
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-                else
-                {
-                    base.Add(key, value);
-                }
-            }
-            finally
-            {
-                if (_lock.IsWriteLockHeld)
-                {
-                    _lock.ExitWriteLock();
-                }
-            }
-        }
-
-        public new void Clear() //TODO
-        {
-            throw new NotSupportedException();
-        }
-
-        public new void Remove(TKey key) //TODO
-        {
-            throw new NotSupportedException();
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/ReflectionUtilities.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/ReflectionUtilities.cs 
b/lang/cs/Source/TANG/Tang/Util/ReflectionUtilities.cs
deleted file mode 100644
index fec364d..0000000
--- a/lang/cs/Source/TANG/Tang/Util/ReflectionUtilities.cs
+++ /dev/null
@@ -1,594 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using Org.Apache.Reef.Utilities.Logging;
-using Org.Apache.Reef.Tang.Annotations;
-using Org.Apache.Reef.Tang.Exceptions;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    public class ReflectionUtilities
-    {
-        private static readonly Logger LOGGER = 
Logger.GetLogger(typeof(ReflectionUtilities));
-
-        public static readonly string Regexp = "[\\.\\+]";
-
-        /// <summary>
-        /// Gets the AssemblyQualifiedName from the Type. This name is used in 
ClassHierarchy
-        /// as a key when add a node as a child to parent. THe name is used as 
FullName in a Node
-        /// </summary>
-        /// <param name="name">The name.</param>
-        /// <returns></returns>
-        /// <exception cref="System.ArgumentException">null is passed in 
FullName() in ReflectionUtilities</exception>
-        public static string GetAssemblyQualifiedName(Type name)
-        {
-            if (name == null)
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ArgumentException("null is passed in FullName() in ReflectionUtilities"), 
LOGGER);
-            }
-
-            Type t = EnsureInterfaceType(name);
-
-            if (t.AssemblyQualifiedName == null && t.Name == null && 
t.FullName == null)
-            {
-                LOGGER.Log(Level.Warning, "The type's name is null: " + 
t.ToString());
-            }
-
-            if (t.AssemblyQualifiedName == null && t.Name != null)
-            {
-                    return t.Name;
-            }
-
-            return t.AssemblyQualifiedName;
-        }
-
-        /// <summary>
-        /// It returns Type.FullName. This name is used as Name in a Node. 
-        /// It is not unique for a generic type with different type of 
arguments.
-        /// It is used for toString or debug info as AssemblyQualifiedName is 
really long
-        /// </summary>
-        /// <param name="name">The name.</param>
-        /// <returns></returns>
-        public static string GetName(Type name)
-        {
-            if (name.FullName != null)
-            {
-                return name.FullName;
-            }
-
-            //The following lines should be not reached by C# syntax 
definition. However, it happens  for some generic type such as 
AbstractObserver<T>
-            //It results in name as null. When null name in the class node 
gets deserialzed, as name is required filed in class hierarchy proto buffer 
schame,
-            //it causes exception during deserialization. The code below is to 
use first portion of AssemblyQualifiedName for the name of the node node in 
case type.name is null. 
-            string[] parts = GetAssemblyQualifiedName(name).Split(',');
-            return parts[0];
-        }
-
-        /// <summary>
-        /// Gets the interface target.
-        // Foo<T> ,  given Foo<T> and Foo return T
-        // example class Foo : Bar<U>, Bas<T>
-        // iface: Bar, type: Foo, return U
-        // iface: Bas, type: Foo, return T
-        // class ACons implements IExternalConstructor<A> 
-        // iface: IExternalConstructor<>, type: ACons return A
-        /// </summary>
-        /// <param name="iface">The iface.</param>
-        /// <param name="type">The type.</param>
-        /// <returns></returns>
-        public static Type GetInterfaceTarget(Type iface, Type type)
-        {
-            foreach (Type t in ReflectionUtilities.ClassAndAncestors(type))
-            {
-                if (IsGenericTypeof(iface, t))
-                {
-                    return t.GetGenericArguments()[0]; //verify it
-                }
-            }
-            return null;
-        }
-
-        public static Type GetInterfaceTargetForType(Type iface, Type type)
-        {
-            if (IsGenericTypeof(iface, type))
-            {
-                return type.GetGenericArguments()[0]; //verify it
-            }
-            return null;
-        }
-
-        /// <summary>
-        /// Determines whether [is generic typeof] [the specified iface].
-        /// </summary>
-        /// <param name="iface">The iface.</param>
-        /// <param name="type">The type.</param>
-        /// <returns>
-        ///   <c>true</c> if [is generic typeof] [the specified iface]; 
otherwise, <c>false</c>.
-        /// </returns>
-        /// <exception cref="System.ApplicationException"></exception>
-        public static bool IsGenericTypeof(Type iface, Type type)
-        {
-            if (iface == null || type == null)
-            {
-                var ex = new 
ApplicationException(string.Format(CultureInfo.CurrentCulture,
-                                                             "The type passed 
in IsGenericTypeof is null: iface : {0} type: {1}. ",
-                                                             iface, type));
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-            }
-            if (type.IsGenericType)
-            {
-                if 
(GetAssemblyQualifiedName(iface).Equals(GetAssemblyQualifiedNameForGeneric(type)))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Classes the and ancestors.
-        /// </summary>
-        /// <param name="c">The c.</param>
-        /// <returns></returns>
-        public static IEnumerable<Type> ClassAndAncestors(Type c)
-        {
-            List<Type> workQueue = new List<Type>();
-            workQueue.Add(c); //including itself
-
-            foreach (Type t in c.GetInterfaces())
-            {
-                workQueue.Add(t);
-            }
-
-            Type b = c.BaseType;
-            while (b != null)
-            {
-                workQueue.Add(b);
-                b = b.BaseType;
-            }
-
-            if (c.IsInterface)
-            {
-                workQueue.Add(typeof (object));
-            }
-
-            return workQueue;
-        }
-
-        public static IEnumerable<Type> ClassAndAncestorsExcludeSelf(Type c)
-        {
-            List<Type> workQueue = new List<Type>();
-            //workQueue.Add(c); //including itself
-
-            foreach (Type t in c.GetInterfaces())
-            {
-                workQueue.Add(t);
-            }
-
-            Type b = c.BaseType;
-            while (b != null)
-            {
-                workQueue.Add(b);
-                b = b.BaseType;
-            }
-
-            if (c.IsInterface)
-            {
-                workQueue.Add(typeof(object));
-            }
-
-            return workQueue;
-        }
-
-        /// <summary>
-        /// Boxes the class.
-        /// </summary>
-        /// <param name="c">The c.</param>
-        /// <returns></returns>
-        /// <exception cref="System.NotSupportedException">Encountered unknown 
primitive type!</exception>
-        public static Type BoxClass(Type c)
-        {
-            if (c.IsPrimitive && c != typeof (Type))
-            {
-                if (c == typeof (bool))
-                {
-                    return typeof (Boolean);
-                }
-                else if (c == typeof (byte))
-                {
-                    return typeof (Byte);
-                }
-                else if (c == typeof (char))
-                {
-                    return typeof (Char);
-                }
-                else if (c == typeof (short))
-                {
-                    return typeof (Int16);
-                }
-                else if (c == typeof (int))
-                {
-                    return typeof (Int32);
-                }
-                else if (c == typeof (long))
-                {
-                    return typeof (Int64);
-                }
-                else if (c == typeof (float))
-                {
-                    return typeof (Single);
-                }
-                else if (c == typeof (double))
-                {
-                    return typeof (Double);
-                }
-                else
-                {
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
NotSupportedException(
-                        "Encountered unknown primitive type!"), LOGGER);
-                    return c;
-                }
-            }
-            else
-            {
-                return c;
-            }
-        }
-
-        /// <summary>
-        /// Determines whether the specified to is coercable.
-        //  public static boolean isCoercable(Class<?> to, Class<?> from) 
castable from to both are numbers and from has a few bits or subclass 
relationship
-        /// </summary>
-        /// <param name="to">To.</param>
-        /// <param name="from">From.</param>
-        /// <returns>
-        ///   <c>true</c> if the specified to is coercable; otherwise, 
<c>false</c>.
-        /// </returns>
-        public static bool IsCoercable(Type to, Type from)
-        {
-            to = BoxClass(to);
-            from = BoxClass(from);
-            //TODO
-            //if (Number.class.isAssignableFrom(to)
-            //    && Number.class.isAssignableFrom(from)) {
-            //return sizeof.get(from) <= sizeof.get(to);
-            return to.IsAssignableFrom(from);
-            //return IsAssignableFromIgnoreGeneric(to, from);
-        }
-
-        /// <summary>
-        /// Determines whether [is assignable from ignore generic] [the 
specified to].
-        /// </summary>
-        /// <param name="to">To.</param>
-        /// <param name="from">From.</param>
-        /// <returns>
-        ///   <c>true</c> if [is assignable from ignore generic] [the 
specified to]; otherwise, <c>false</c>.
-        /// </returns>
-        public static bool IsAssignableFromIgnoreGeneric(Type to, Type from)
-        {
-            var f = ClassAndAncestors(from);
-            foreach (Type t in f)
-            {
-                if 
(GetAssemblyQualifiedName(to).Equals(GetAssemblyQualifiedNameForGeneric(t)))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Ensures the type of the interface. For generic types, full name 
could be null. In this case, we need to 
-        /// get GetGenericTypeDefinition for the type so that to rerain all 
teh type information
-        /// </summary>
-        /// <param name="interf">The interf.</param>
-        /// <returns></returns>
-        public static Type EnsureInterfaceType(Type interf)
-        {
-            if (interf != null && interf.IsGenericType && null == 
interf.FullName)
-            {
-                return interf.GetGenericTypeDefinition(); //this is to test if 
this line is ever reached
-            }
-            return interf;
-        }
-
-        /// <summary>
-        /// Gets the assembly qualified name for generic.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <returns></returns>
-        public static string GetAssemblyQualifiedNameForGeneric(Type t)
-        {
-            Type t1 = t;
-            if (t.IsGenericType)
-            {
-                t1 = t.GetGenericTypeDefinition();
-            }
-            return t1.AssemblyQualifiedName;
-        }
-
-        /// <summary>
-        /// Determines whether [is instance of generic] [the specified p].
-        /// </summary>
-        /// <param name="p">The p.</param>
-        /// <param name="t">The t.</param>
-        /// <returns>
-        ///   <c>true</c> if [is instance of generic] [the specified p]; 
otherwise, <c>false</c>.
-        /// </returns>
-        public static bool IsInstanceOfGeneric(object p, Type t)
-        {
-            foreach (var g in 
ReflectionUtilities.ClassAndAncestors(p.GetType()))
-            {
-                if 
(GetAssemblyQualifiedNameForGeneric(t).Equals(GetAssemblyQualifiedNameForGeneric(g)))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        /// <summary>
-        /// Gets the name of the type by.
-        /// </summary>
-        /// <param name="name">The name.</param>
-        /// <returns></returns>
-        /// <exception cref="System.ApplicationException">Not able to get Type 
from the name provided:  +  name</exception>
-        public static Type GetTypeByName(string name)
-        {
-            Type t = null;
-
-            t = Type.GetType(name);
-
-            if (t == null)
-            {
-                foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
-                {
-                    t = a.GetType(name);
-                    if (t != null)
-                        break;
-                }
-            }
-            if (t == null)
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ApplicationException("Not able to get Type from the name provided: " + name), 
LOGGER);
-            }
-
-            return t;
-        }
-
-        /// <summary>
-        /// Gets the enclosing classes.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <returns></returns>
-        public static Type[] GetEnclosingClasses(Type t)
-        {
-            IList<Type> l = new List<Type>();
-            l.Add(t);
-            Type current = t.DeclaringType;
-            while (current != null)
-            {
-                l.Add(current);
-                current = current.DeclaringType;
-            }
-            return l.Reverse().ToArray();
-        }
-
-        /// <summary>
-        /// Gets the enclosing class names.
-        /// </summary>
-        /// <param name="t">The t.</param>
-        /// <returns></returns>
-        /// <exception cref="System.ApplicationException">The Type passed to 
GetEnclosingClassShortNames is null</exception>
-        public static string[] GetEnclosingClassNames(Type t)
-        {
-            if (t == null)
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ApplicationException("The Type passed to GetEnclosingClassShortNames is null"), 
LOGGER);
-            }
-            Type[] ts = GetEnclosingClasses(t);
-            string[] result = new string[ts.Length];
-            for (int i = 0; i < ts.Length; i++)
-            {
-                result[i] = GetAssemblyQualifiedName(ts[i]);
-            }
-
-            return result;
-        }
-
-        /// <summary>
-        /// Gets the enclosing class names.
-        /// </summary>
-        /// <param name="fullName">The full name.</param>
-        /// <returns></returns>
-        /// <exception cref="System.ApplicationException">The name passed to 
GetEnclosingClassShortNames is null</exception>
-        public static string[] GetEnclosingClassNames(string fullName)
-        {
-            if (fullName == null)
-            {
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(new 
ApplicationException("The name passed to GetEnclosingClassShortNames is null"), 
LOGGER);
-            }
-            Type t = ReflectionUtilities.GetTypeByName(fullName);
-            return GetEnclosingClassNames(t);
-        }
-
-        /// <summary>
-        /// Gets the named parameter target or null.
-        /// </summary>
-        /// <param name="type">The type.</param>
-        /// <returns></returns>
-        /// <exception cref="ClassHierarchyException">Named parameter  + 
GetName(type) +  implements 
-        ///                                   + multiple interfaces.  It is 
only allowed to implement Name</exception>
-        public static Type GetNamedParameterTargetOrNull(Type type)
-        {
-            var npAnnotation = 
type.GetCustomAttribute<NamedParameterAttribute>();
-            if (npAnnotation != null)
-            {
-                Type[] intfs = type.GetInterfaces();
-                if (intfs.Length > 1)
-                {
-                    var ex = new ClassHierarchyException("Named parameter " + 
GetName(type) + " implements "
-                                  + "multiple interfaces.  It is only allowed 
to implement Name<T>");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-
-                }
-                else if (intfs.Length == 0 || !IsName(intfs[0]))
-                {
-                    var ex = new ClassHierarchyException("Found illegal 
[NamedParameter " + GetName(type)
-                                  + " does not implement Name<T>");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-                Type[] args = intfs[0].GetGenericArguments();
-                if (args.Length > 1)
-                {
-                    var ex = new ClassHierarchyException("Found illegal 
[NamedParameter " + GetName(type)
-                        + " that has more than one arguments");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-                if (args.Length == 0)
-                {
-                    var ex = new ClassHierarchyException("Found illegal 
[NamedParameter " + GetName(type)
-                        + " that has no argument");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-                if (HasConstructor(type) || HasInjectableConstructor(type))
-                {
-                    var ex = new ClassHierarchyException("Named parameter " + 
GetName(type) + " has "
-                                  + (HasInjectableConstructor(type) ? "an 
injectable" : "a") + " constructor. "
-                                  + " Named parameters must not declare any 
constructors.");
-                    Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-                }
-
-                return args[0];               
-            }
-
-            if (ImplementName(type)) //Implement Name<> but no  
[NamedParameter] attribute
-            {
-                var ex = new ClassHierarchyException("Named parameter " + 
GetName(type)
-                                  + " is missing its [NamedParameter] 
attribute.");
-                Org.Apache.Reef.Utilities.Diagnostics.Exceptions.Throw(ex, 
LOGGER);
-            }
-            return null;
-        }
-
-        public static IEnumerable<Type> GetInterfaces(Type type, bool 
includeInherited)
-        {
-            if (includeInherited || type.BaseType == null)
-                return type.GetInterfaces();
-            else
-                return 
type.GetInterfaces().Except(type.BaseType.GetInterfaces());
-        }
-
-        // Here is a more elaborate hack to test for annonymous type:
-        // 
http://stackoverflow.com/questions/2483023/how-to-test-if-a-type-is-anonymous
-        // compiler generated classes are always recreatable and need not 
additional references to check for.
-        public static bool IsAnnonymousType(Type type)
-        {
-            if (type != null)
-            {
-                // HACK: The only way to detect anonymous types right now.
-                return Attribute.IsDefined(type, 
typeof(CompilerGeneratedAttribute), false)
-                       && type.IsGenericType && 
type.Name.Contains("AnonymousType")
-                       && (type.Name.StartsWith("<>", true, 
CultureInfo.CurrentCulture) || type.Name.StartsWith("VB$", true, 
CultureInfo.CurrentCulture))
-                       && (type.Attributes & TypeAttributes.NotPublic) == 
TypeAttributes.NotPublic;
-            }
-            return false;
-        }
-
-        private static bool ImplementName(Type type)
-        {
-            foreach (Type t in type.GetInterfaces())
-            {
-                if (IsName(t))
-                {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        private static bool IsName(Type t)
-        {
-            if (t.IsGenericType)
-            {
-                return 
t.GetGenericTypeDefinition().AssemblyQualifiedName.Equals(typeof 
(Name<>).AssemblyQualifiedName);
-            }
-            return false;
-        }
-
-        private static bool HasConstructor(Type type)
-        {
-            bool hasConstructor = false;
-
-            ConstructorInfo[] constructors =
-                type.GetConstructors(BindingFlags.Public | 
BindingFlags.NonPublic | BindingFlags.Instance);
-
-            if (constructors.Length > 1)
-            {
-                hasConstructor = true;
-            }
-
-            if (constructors.Length == 1)
-            {
-                ConstructorInfo c = constructors[0];
-                ParameterInfo[] p = c.GetParameters();
-                if (p.Length > 1)
-                {
-                    // Multiple args. Definitely not implicit.
-                    hasConstructor = true;
-                }
-                else if (p.Length == 1)
-                {
-                    // One arg. Could be an inner class, in which case the 
compiler
-                    // included an implicit one parameter constructor that 
takes the
-                    // enclosing type.
-                    if (p[0].ParameterType != type.DeclaringType)
-                    {
-                        hasConstructor = true;
-                    }
-                }
-            }
-            return hasConstructor;
-        }
-
-        private static bool HasInjectableConstructor(Type type)
-        {
-            bool isInjectable = false;
-
-            ConstructorInfo[] constructors =
-                type.GetConstructors(BindingFlags.Public | 
BindingFlags.NonPublic | BindingFlags.Instance);
-
-            foreach (ConstructorInfo c in constructors)
-            {
-                foreach (Attribute a in c.GetCustomAttributes())
-                {
-                    if (a is InjectAttribute)
-                    {
-                        isInjectable = true;
-                    }
-                }
-            }
-            return isInjectable;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/Util/SetValuedKey.cs
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/Util/SetValuedKey.cs 
b/lang/cs/Source/TANG/Tang/Util/SetValuedKey.cs
deleted file mode 100644
index 4c3090e..0000000
--- a/lang/cs/Source/TANG/Tang/Util/SetValuedKey.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace Org.Apache.Reef.Tang.Util
-{
-    class SetValuedKey
-    {
-        public IList<object> key;
-
-        public SetValuedKey(object[] ts, object[] us)
-        {
-            key = ts.ToList<object>();
-            foreach (var o in us)
-            {
-                key.Add(o);
-            }
-        }
-
-        public override int GetHashCode()
-        {
-            int i = 0;
-            foreach (object t in key)
-            {
-                i += t.GetHashCode();
-            }
-            return i;
-        }
-
-        public override bool Equals(Object o)
-        {
-            SetValuedKey other = (SetValuedKey)o;
-            if (other.key.Count != this.key.Count) { return false; }
-            for (int i = 0; i < this.key.Count; i++)
-            {
-                if (this.key[i].Equals(other.key[i]))
-                {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/c1b5200f/lang/cs/Source/TANG/Tang/packages.config
----------------------------------------------------------------------
diff --git a/lang/cs/Source/TANG/Tang/packages.config 
b/lang/cs/Source/TANG/Tang/packages.config
deleted file mode 100644
index 933b7e1..0000000
--- a/lang/cs/Source/TANG/Tang/packages.config
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<packages>
-  <package id="Microsoft.Hadoop.Avro" version="1.4.0.0" 
targetFramework="net45" />
-  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
-  <package id="protobuf-net" version="2.0.0.668" targetFramework="net45" />
-</packages>
\ No newline at end of file

Reply via email to