changeset 19403:61d3cb8e1280

Add generic parameter to NodeClass. Change Graph#getNodes(Class) to Graph#getNodes(NodeClass).
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Mon, 16 Feb 2015 17:47:43 +0100
parents a16f1bbe2965
children b029f5244371
files graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeClassSubstitutionsTest.java graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java
diffstat 401 files changed, 614 insertions(+), 614 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/IterationDirectiveTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -51,7 +51,7 @@
 
     @Override
     protected boolean checkLowTierGraph(StructuredGraph graph) {
-        NodeIterable<LoopBeginNode> loopBeginNodes = graph.getNodes(LoopBeginNode.class);
+        NodeIterable<LoopBeginNode> loopBeginNodes = graph.getNodes(LoopBeginNode.TYPE);
         Assert.assertEquals("LoopBeginNode count", 1, loopBeginNodes.count());
 
         LoopBeginNode loopBeginNode = loopBeginNodes.first();
--- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/OpaqueDirectiveTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -123,7 +123,7 @@
     @Override
     protected boolean checkLowTierGraph(StructuredGraph graph) {
         OpaqueSnippet snippet = graph.method().getAnnotation(OpaqueSnippet.class);
-        for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) {
+        for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) {
             Assert.assertEquals(snippet.expectedReturnNode(), returnNode.result().getClass());
         }
         return true;
--- a/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.api.directives.test/src/com/oracle/graal/api/directives/test/ProbabilityDirectiveTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
 
     @Override
     protected boolean checkLowTierGraph(StructuredGraph graph) {
-        NodeIterable<IfNode> ifNodes = graph.getNodes(IfNode.class);
+        NodeIterable<IfNode> ifNodes = graph.getNodes(IfNode.TYPE);
         Assert.assertEquals("IfNode count", 1, ifNodes.count());
 
         IfNode ifNode = ifNodes.first();
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/BoxingEliminationTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -300,8 +300,8 @@
 
     final ValueNode getResult(String snippet) {
         processMethod(snippet);
-        assertDeepEquals(1, graph.getNodes(ReturnNode.class).count());
-        return graph.getNodes(ReturnNode.class).first().result();
+        assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count());
+        return graph.getNodes(ReturnNode.TYPE).first().result();
     }
 
     private void processMethod(final String snippet) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/CompareCanonicalizerTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -131,8 +131,8 @@
         result = getResult(getCanonicalizedGraph("integerTestCanonicalization2"));
         assertTrue(result.isConstant() && result.asJavaConstant().asLong() == 1);
         StructuredGraph graph = getCanonicalizedGraph("integerTestCanonicalization3");
-        assertDeepEquals(1, graph.getNodes(ReturnNode.class).count());
-        assertTrue(graph.getNodes(ReturnNode.class).first().result() instanceof ConditionalNode);
+        assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count());
+        assertTrue(graph.getNodes(ReturnNode.TYPE).first().result() instanceof ConditionalNode);
     }
 
     public static int integerTestCanonicalization1(boolean b) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -294,8 +294,8 @@
 
     protected void assertConstantReturn(StructuredGraph graph, int value) {
         String graphString = getCanonicalGraphString(graph, false, true);
-        Assert.assertEquals("unexpected number of ReturnNodes: " + graphString, graph.getNodes(ReturnNode.class).count(), 1);
-        ValueNode result = graph.getNodes(ReturnNode.class).first().result();
+        Assert.assertEquals("unexpected number of ReturnNodes: " + graphString, graph.getNodes(ReturnNode.TYPE).count(), 1);
+        ValueNode result = graph.getNodes(ReturnNode.TYPE).first().result();
         Assert.assertTrue("unexpected ReturnNode result node: " + graphString, result.isConstant());
         Assert.assertEquals("unexpected ReturnNode result kind: " + graphString, result.asJavaConstant().getKind(), Kind.Int);
         Assert.assertEquals("unexpected ReturnNode result: " + graphString, result.asJavaConstant().asInt(), value);
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IfCanonicalizerTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -194,7 +194,7 @@
 
     private void test(String snippet) {
         StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES);
-        ParameterNode param = graph.getNodes(ParameterNode.class).iterator().next();
+        ParameterNode param = graph.getNodes(ParameterNode.TYPE).iterator().next();
         ConstantNode constant = ConstantNode.forInt(0, graph);
         for (Node n : param.usages().filter(isNotA(FrameState.class)).snapshot()) {
             n.replaceFirstInput(param, constant);
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/IntegerEqualsCanonicalizerTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -115,7 +115,7 @@
     private StructuredGraph getCanonicalizedGraph(String snippet) {
         StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES);
         new CanonicalizerPhase(false).apply(graph, new PhaseContext(getProviders()));
-        for (FrameState state : graph.getNodes(FrameState.class).snapshot()) {
+        for (FrameState state : graph.getNodes(FrameState.TYPE).snapshot()) {
             state.replaceAtUsages(null);
             state.safeDelete();
         }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MemoryScheduleTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -264,8 +264,8 @@
     public void testArrayCopy() {
         SchedulePhase schedule = getFinalSchedule("testArrayCopySnippet", TestMode.INLINED_WITHOUT_FRAMESTATES);
         StructuredGraph graph = schedule.getCFG().getStartBlock().getBeginNode().graph();
-        assertDeepEquals(1, graph.getNodes(ReturnNode.class).count());
-        ReturnNode ret = graph.getNodes(ReturnNode.class).first();
+        assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count());
+        ReturnNode ret = graph.getNodes(ReturnNode.TYPE).first();
         assertTrue(ret.result() + " should be a FloatingReadNode", ret.result() instanceof FloatingReadNode);
         assertDeepEquals(schedule.getCFG().blockFor(ret), schedule.getCFG().blockFor(ret.result()));
         assertReadWithinAllReturnBlocks(schedule, true);
@@ -543,11 +543,11 @@
 
     private void assertReadWithinAllReturnBlocks(SchedulePhase schedule, boolean withinReturnBlock) {
         StructuredGraph graph = schedule.getCFG().graph;
-        assertTrue(graph.getNodes(ReturnNode.class).isNotEmpty());
+        assertTrue(graph.getNodes(ReturnNode.TYPE).isNotEmpty());
 
         int withRead = 0;
         int returnBlocks = 0;
-        for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) {
+        for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) {
             Block block = schedule.getCFG().getNodeToBlock().get(returnNode);
             for (Node node : schedule.getBlockToNodesMap().get(block)) {
                 if (node instanceof FloatingReadNode) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MergeCanonicalizerTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -61,6 +61,6 @@
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
         Debug.dump(graph, "Graph");
-        assertDeepEquals(returnCount, graph.getNodes(ReturnNode.class).count());
+        assertDeepEquals(returnCount, graph.getNodes(ReturnNode.TYPE).count());
     }
 }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/MonitorGraphTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -69,7 +69,7 @@
     @Test
     public void test2() {
         StructuredGraph graph = parseAndProcess("test2Snippet");
-        NodeIterable<MonitorExitNode> monitors = graph.getNodes(MonitorExitNode.class);
+        NodeIterable<MonitorExitNode> monitors = graph.getNodes(MonitorExitNode.TYPE);
         Assert.assertEquals(1, monitors.count());
         Assert.assertEquals(monitors.first().stateAfter().bci, 3);
     }
@@ -85,7 +85,7 @@
 
     private StructuredGraph parseAndProcess(String snippet) {
         StructuredGraph graph = parseEager(snippet, AllowAssumptions.NO);
-        ParameterNode param = graph.getNodes(ParameterNode.class).first();
+        ParameterNode param = graph.getNodes(ParameterNode.TYPE).first();
         if (param != null) {
             ConstantNode constant = ConstantNode.forInt(0, graph);
             for (Node n : param.usages().filter(isNotA(FrameState.class)).snapshot()) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NestedLoopTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -137,7 +137,7 @@
     }
 
     private static Invoke getInvoke(String name, StructuredGraph graph) {
-        for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.TYPE)) {
             if (callTarget.targetMethod().getName().equals(name)) {
                 return callTarget.invoke();
             }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/NodePosIteratorTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 
     @NodeInfo
     static final class TestNode extends Node {
-        public static final NodeClass TYPE = NodeClass.get(TestNode.class);
+        public static final NodeClass<TestNode> TYPE = NodeClass.get(TestNode.class);
         @Successor Node s1;
         @Successor Node s2;
         @Successor NodeSuccessorList<Node> stail;
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/PushThroughIfTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -59,7 +59,7 @@
     private void test(String snippet, String reference) {
         StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES);
         Debug.dump(graph, "Graph");
-        for (FrameState fs : graph.getNodes(FrameState.class).snapshot()) {
+        for (FrameState fs : graph.getNodes(FrameState.TYPE).snapshot()) {
             fs.replaceAtUsages(null);
             GraphUtil.killWithUnusedFloatingInputs(fs);
         }
@@ -67,7 +67,7 @@
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
 
         StructuredGraph referenceGraph = parseEager(reference, AllowAssumptions.YES);
-        for (FrameState fs : referenceGraph.getNodes(FrameState.class).snapshot()) {
+        for (FrameState fs : referenceGraph.getNodes(FrameState.TYPE).snapshot()) {
             fs.replaceAtUsages(null);
             GraphUtil.killWithUnusedFloatingInputs(fs);
         }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ReadAfterCheckCastTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -91,7 +91,7 @@
 
             Debug.dump(graph, "After lowering");
 
-            for (FloatingReadNode node : graph.getNodes(ParameterNode.class).first().usages().filter(FloatingReadNode.class)) {
+            for (FloatingReadNode node : graph.getNodes(ParameterNode.TYPE).first().usages().filter(FloatingReadNode.class)) {
                 // Checking that the parameter a is not directly used for the access to field
                 // x10 (because x10 must be guarded by the checkcast).
                 Assert.assertTrue(node.location().getLocationIdentity().isImmutable());
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/EATestBase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -158,7 +158,7 @@
             new DeadCodeEliminationPhase().apply(graph);
             new CanonicalizerPhase(true).apply(graph, context);
             new PartialEscapePhase(iterativeEscapeAnalysis, false, new CanonicalizerPhase(true), null).apply(graph, context);
-            returnNodes = graph.getNodes(ReturnNode.class).snapshot();
+            returnNodes = graph.getNodes(ReturnNode.TYPE).snapshot();
         } catch (Throwable e) {
             throw Debug.handle(e);
         }
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -79,8 +79,8 @@
 
     final ReturnNode getReturn(String snippet) {
         processMethod(snippet);
-        assertDeepEquals(1, graph.getNodes(ReturnNode.class).count());
-        return graph.getNodes(ReturnNode.class).first();
+        assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count());
+        return graph.getNodes(ReturnNode.TYPE).first();
     }
 
     private void processMethod(final String snippet) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PEAReadEliminationTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -199,7 +199,7 @@
     public void testPhi() {
         processMethod("testPhiSnippet");
         assertTrue(graph.getNodes().filter(LoadFieldNode.class).isEmpty());
-        List<ReturnNode> returnNodes = graph.getNodes(ReturnNode.class).snapshot();
+        List<ReturnNode> returnNodes = graph.getNodes(ReturnNode.TYPE).snapshot();
         assertDeepEquals(2, returnNodes.size());
         assertTrue(returnNodes.get(0).predecessor() instanceof StoreFieldNode);
         assertTrue(returnNodes.get(1).predecessor() instanceof StoreFieldNode);
@@ -239,8 +239,8 @@
 
     final ReturnNode getReturn(String snippet) {
         processMethod(snippet);
-        assertDeepEquals(1, graph.getNodes(ReturnNode.class).count());
-        return graph.getNodes(ReturnNode.class).first();
+        assertDeepEquals(1, graph.getNodes(ReturnNode.TYPE).count());
+        return graph.getNodes(ReturnNode.TYPE).first();
     }
 
     protected void processMethod(final String snippet) {
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PartialEscapeAnalysisTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -177,7 +177,7 @@
     @SafeVarargs
     protected final void testPartialEscapeAnalysis(final String snippet, double expectedProbability, int expectedCount, Class<? extends Node>... invalidNodeClasses) {
         prepareGraph(snippet, false);
-        for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class)) {
+        for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE)) {
             merge.setStateAfter(null);
         }
         new DeadCodeEliminationPhase().apply(graph);
--- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/PoorMansEATest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -66,7 +66,7 @@
             new LoweringPhase(new CanonicalizerPhase(true), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context);
 
             // remove framestates in order to trigger the simplification.
-            cleanup: for (FrameState fs : graph.getNodes(FrameState.class).snapshot()) {
+            cleanup: for (FrameState fs : graph.getNodes(FrameState.TYPE).snapshot()) {
                 for (Node input : fs.inputs()) {
                     if (input instanceof NewInstanceNode) {
                         fs.replaceAtUsages(null);
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/NodeLIRBuilder.java	Mon Feb 16 17:47:43 2015 +0100
@@ -329,7 +329,7 @@
 
         gen.emitIncomingValues(params);
 
-        for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
+        for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) {
             Value paramValue = params[param.index()];
             assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp()));
             setResult(param, gen.emitMove(paramValue));
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/match/MatchRuleRegistry.java	Mon Feb 16 17:47:43 2015 +0100
@@ -44,11 +44,11 @@
      * level of indirection.
      */
     public interface NodeClassLookup {
-        NodeClass get(Class<?> theClass);
+        NodeClass<?> get(Class<?> theClass);
     }
 
     static class DefaultNodeClassLookup implements NodeClassLookup {
-        public NodeClass get(Class<?> theClass) {
+        public NodeClass<?> get(Class<?> theClass) {
             return NodeClass.get(theClass);
         }
     }
@@ -64,7 +64,7 @@
      */
     public static Position[] findPositions(NodeClassLookup lookup, Class<? extends ValueNode> theClass, String[] names) {
         Position[] result = new Position[names.length];
-        NodeClass nodeClass = lookup.get(theClass);
+        NodeClass<?> nodeClass = lookup.get(theClass);
         for (int i = 0; i < names.length; i++) {
             Edges edges = nodeClass.getEdges(Inputs);
             for (int e = 0; e < edges.getDirectCount(); e++) {
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeMapTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
     @NodeInfo
     static final class TestNode extends Node {
-        public static final NodeClass TYPE = NodeClass.get(TestNode.class);
+        public static final NodeClass<TestNode> TYPE = NodeClass.get(TestNode.class);
 
         protected TestNode() {
             super(TYPE);
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/NodeUsagesTests.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 
     @NodeInfo
     static final class Def extends Node {
-        public static final NodeClass TYPE = NodeClass.get(Def.class);
+        public static final NodeClass<Def> TYPE = NodeClass.get(Def.class);
 
         protected Def() {
             super(TYPE);
@@ -44,7 +44,7 @@
 
     @NodeInfo
     static final class Use extends Node {
-        public static final NodeClass TYPE = NodeClass.get(Use.class);
+        public static final NodeClass<Use> TYPE = NodeClass.get(Use.class);
         @Input Def in0;
         @Input Def in1;
         @Input Def in2;
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
     @NodeInfo
     static final class TestNode extends Node implements IterableNodeType, TestNodeInterface {
 
-        public static final NodeClass TYPE = NodeClass.get(TestNode.class);
+        public static final NodeClass<TestNode> TYPE = NodeClass.get(TestNode.class);
         protected final String name;
 
         public TestNode(String name) {
@@ -53,8 +53,8 @@
     public void singleNodeTest() {
         Graph graph = new Graph();
         graph.add(new TestNode("a"));
-        assertTrue(graph.hasNode(TestNode.class));
-        assertEquals("a", toString(graph.getNodes(TestNode.class)));
+        assertTrue(graph.hasNode(TestNode.TYPE));
+        assertEquals("a", toString(graph.getNodes(TestNode.TYPE)));
     }
 
     @Test
@@ -63,7 +63,7 @@
         Graph graph = new Graph();
         graph.add(testNode);
         testNode.safeDelete();
-        assertEquals("", toString(graph.getNodes(TestNode.class)));
+        assertEquals("", toString(graph.getNodes(TestNode.TYPE)));
     }
 
     @Test
@@ -73,16 +73,16 @@
         graph.add(new TestNode("a"));
         graph.add(testNode);
         testNode.safeDelete();
-        assertEquals("a", toString(graph.getNodes(TestNode.class)));
+        assertEquals("a", toString(graph.getNodes(TestNode.TYPE)));
         graph.add(new TestNode("c"));
-        assertEquals("ac", toString(graph.getNodes(TestNode.class)));
+        assertEquals("ac", toString(graph.getNodes(TestNode.TYPE)));
     }
 
     @Test
     public void iteratorBehaviorTest() {
         Graph graph = new Graph();
         graph.add(new TestNode("a"));
-        Iterator<TestNode> iterator = graph.getNodes(TestNode.class).iterator();
+        Iterator<TestNode> iterator = graph.getNodes(TestNode.TYPE).iterator();
         assertTrue(iterator.hasNext());
         assertEquals("a", iterator.next().getName());
         assertFalse(iterator.hasNext());
@@ -101,7 +101,7 @@
     public void complicatedIterationTest() {
         Graph graph = new Graph();
         graph.add(new TestNode("a"));
-        for (TestNode tn : graph.getNodes(TestNode.class)) {
+        for (TestNode tn : graph.getNodes(TestNode.TYPE)) {
             String name = tn.getName();
             for (int i = 0; i < name.length(); ++i) {
                 char c = name.charAt(i);
@@ -121,7 +121,7 @@
                     graph.add(new TestNode("e"));
                     graph.add(new TestNode("d"));
                 } else if (c == 'd') {
-                    for (TestNode tn2 : graph.getNodes(TestNode.class)) {
+                    for (TestNode tn2 : graph.getNodes(TestNode.TYPE)) {
                         if (tn2.getName().equals("e")) {
                             tn2.safeDelete();
                         } else if (tn2.getName().equals("c")) {
@@ -133,7 +133,7 @@
                 }
             }
         }
-        assertEquals("dddd", toString(graph.getNodes(TestNode.class)));
+        assertEquals("dddd", toString(graph.getNodes(TestNode.TYPE)));
     }
 
     @Test
@@ -142,7 +142,7 @@
         graph.add(new TestNode("a"));
         StringBuilder sb = new StringBuilder();
         int z = 0;
-        for (TestNode tn : graph.getNodes(TestNode.class)) {
+        for (TestNode tn : graph.getNodes(TestNode.TYPE)) {
             if (z == 0) {
                 graph.add(new TestNode("b"));
             }
@@ -152,7 +152,7 @@
         assertEquals(2, z);
         assertEquals("ab", sb.toString());
         z = 0;
-        for (TestNode tn : graph.getNodes(TestNode.class)) {
+        for (TestNode tn : graph.getNodes(TestNode.TYPE)) {
             if (z == 0) {
                 graph.add(new TestNode("c"));
             }
--- a/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph.test/src/com/oracle/graal/graph/test/TypedNodeIteratorTest2.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,14 +34,14 @@
     @NodeInfo
     static class NodeA extends Node implements TestNodeInterface {
 
-        public static final NodeClass TYPE = NodeClass.get(NodeA.class);
+        public static final NodeClass<NodeA> TYPE = NodeClass.get(NodeA.class);
         protected final String name;
 
         public NodeA(String name) {
             this(TYPE, name);
         }
 
-        protected NodeA(NodeClass c, String name) {
+        protected NodeA(NodeClass<?> c, String name) {
             super(c);
             this.name = name;
         }
@@ -53,13 +53,13 @@
 
     @NodeInfo
     static class NodeB extends NodeA implements IterableNodeType {
-        public static final NodeClass TYPE = NodeClass.get(NodeB.class);
+        public static final NodeClass<NodeB> TYPE = NodeClass.get(NodeB.class);
 
         public NodeB(String name) {
             this(TYPE, name);
         }
 
-        protected NodeB(NodeClass c, String name) {
+        protected NodeB(NodeClass<?> c, String name) {
             super(c, name);
         }
 
@@ -67,13 +67,13 @@
 
     @NodeInfo
     static class NodeC extends NodeB {
-        public static final NodeClass TYPE = NodeClass.get(NodeC.class);
+        public static final NodeClass<NodeC> TYPE = NodeClass.get(NodeC.class);
 
         public NodeC(String name) {
             this(TYPE, name);
         }
 
-        protected NodeC(NodeClass c, String name) {
+        protected NodeC(NodeClass<?> c, String name) {
             super(c, name);
         }
 
@@ -81,7 +81,7 @@
 
     @NodeInfo
     static final class NodeD extends NodeC {
-        public static final NodeClass TYPE = NodeClass.get(NodeD.class);
+        public static final NodeClass<NodeD> TYPE = NodeClass.get(NodeD.class);
 
         public NodeD(String name) {
             super(TYPE, name);
@@ -95,8 +95,8 @@
         graph.add(new NodeB("b"));
         graph.add(new NodeD("d"));
 
-        Assert.assertEquals("bd", TypedNodeIteratorTest.toString(graph.getNodes(NodeB.class)));
-        Assert.assertEquals("d", TypedNodeIteratorTest.toString(graph.getNodes(NodeD.class)));
+        Assert.assertEquals("bd", TypedNodeIteratorTest.toString(graph.getNodes(NodeB.TYPE)));
+        Assert.assertEquals("d", TypedNodeIteratorTest.toString(graph.getNodes(NodeD.TYPE)));
     }
 
     @Test
@@ -105,21 +105,21 @@
         graph.add(new NodeB("b1"));
         NodeD d1 = graph.add(new NodeD("d1"));
         StringBuilder sb = new StringBuilder();
-        for (NodeB tn : graph.getNodes(NodeB.class)) {
+        for (NodeB tn : graph.getNodes(NodeB.TYPE)) {
             if (tn == d1) {
                 graph.add(new NodeB("b2"));
             }
             sb.append(tn.getName());
         }
         assertEquals("b1d1b2", sb.toString());
-        for (NodeB tn : graph.getNodes(NodeB.class)) {
+        for (NodeB tn : graph.getNodes(NodeB.TYPE)) {
             if (tn == d1) {
                 graph.add(new NodeB("b3"));
             }
             assertNotNull(tn);
         }
-        assertEquals(4, graph.getNodes(NodeB.class).count());
-        assertEquals(1, graph.getNodes(NodeD.class).count());
+        assertEquals(4, graph.getNodes(NodeB.TYPE).count());
+        assertEquals(1, graph.getNodes(NodeD.TYPE).count());
     }
 
 }
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Graph.java	Mon Feb 16 17:47:43 2015 +0100
@@ -485,7 +485,7 @@
     }
 
     public Node findDuplicate(Node node) {
-        NodeClass nodeClass = node.getNodeClass();
+        NodeClass<?> nodeClass = node.getNodeClass();
         assert nodeClass.valueNumberable();
         if (nodeClass.isLeafNode()) {
             // Leaf node: look up in cache
@@ -626,7 +626,7 @@
     @com.oracle.graal.nodeinfo.NodeInfo
     static final class PlaceHolderNode extends Node {
 
-        public static final NodeClass TYPE = NodeClass.get(PlaceHolderNode.class);
+        public static final NodeClass<PlaceHolderNode> TYPE = NodeClass.get(PlaceHolderNode.class);
 
         public PlaceHolderNode() {
             super(TYPE);
@@ -689,11 +689,10 @@
      * Returns an {@link Iterable} providing all the live nodes whose type is compatible with
      * {@code type}.
      *
-     * @param type the type of node to return
+     * @param nodeClass the type of node to return
      * @return an {@link Iterable} providing all the matching nodes
      */
-    public <T extends Node & IterableNodeType> NodeIterable<T> getNodes(final Class<T> type) {
-        final NodeClass nodeClass = NodeClass.get(type);
+    public <T extends Node & IterableNodeType> NodeIterable<T> getNodes(final NodeClass<T> nodeClass) {
         return new NodeIterable<T>() {
 
             @Override
@@ -709,7 +708,7 @@
      * @param type the type of node that is checked for occurrence
      * @return whether there is at least one such node
      */
-    public <T extends Node & IterableNodeType> boolean hasNode(final Class<T> type) {
+    public <T extends Node & IterableNodeType> boolean hasNode(final NodeClass<T> type) {
         return getNodes(type).iterator().hasNext();
     }
 
@@ -765,8 +764,9 @@
     }
 
     /**
-     * Rebuilds the lists used to support {@link #getNodes(Class)}. This is useful for serialization
-     * where the underlying {@linkplain NodeClass#iterableId() iterable ids} may have changed.
+     * Rebuilds the lists used to support {@link #getNodes(NodeClass)}. This is useful for
+     * serialization where the underlying {@linkplain NodeClass#iterableId() iterable ids} may have
+     * changed.
      */
     private void recomputeIterableNodeLists() {
         iterableNodesFirst.clear();
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/IterableNodeType.java	Mon Feb 16 17:47:43 2015 +0100
@@ -23,7 +23,7 @@
 package com.oracle.graal.graph;
 
 /**
- * A marker for a node type supporting {@linkplain Graph#getNodes(Class) fast iteration} of its
+ * A marker for a node type supporting {@linkplain Graph#getNodes(NodeClass) fast iteration} of its
  * instances in a graph. The support for fast iteration comes with a memory cost (e.g., extra data
  * structures {@link Graph}) so only node types for which fast iteration provides a compilation
  * performance benefit should implement this interface.
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/Node.java	Mon Feb 16 17:47:43 2015 +0100
@@ -76,7 +76,7 @@
 @NodeInfo
 public abstract class Node implements Cloneable, Formattable {
 
-    public static final NodeClass TYPE = null;
+    public static final NodeClass<?> TYPE = null;
     public static final boolean USE_UNSAFE_TO_CLONE = Boolean.parseBoolean(System.getProperty("graal.node.useUnsafeToClone", "true"));
 
     static final int DELETED_ID_START = -1000000000;
@@ -194,12 +194,12 @@
     int extraUsagesCount;
 
     private Node predecessor;
-    private NodeClass nodeClass;
+    private NodeClass<?> nodeClass;
 
     public static final int NODE_LIST = -2;
     public static final int NOT_ITERABLE = -1;
 
-    public Node(NodeClass c) {
+    public Node(NodeClass<?> c) {
         init();
         assert c.getJavaClass() == this.getClass();
         this.nodeClass = c;
@@ -499,7 +499,7 @@
         }
     }
 
-    public final NodeClass getNodeClass() {
+    public final NodeClass<?> getNodeClass() {
         return nodeClass;
     }
 
@@ -741,7 +741,7 @@
      * @return the copy of this node
      */
     final Node clone(Graph into, EnumSet<Edges.Type> edgesToCopy) {
-        final NodeClass nodeClassTmp = getNodeClass();
+        final NodeClass<?> nodeClassTmp = getNodeClass();
         boolean useIntoLeafNodeCache = false;
         if (into != null) {
             if (nodeClassTmp.valueNumberable() && nodeClassTmp.isLeafNode()) {
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java	Mon Feb 16 17:47:43 2015 +0100
@@ -50,7 +50,7 @@
  * <li>The identifier for an {@link IterableNodeType} class.</li>
  * </ul>
  */
-public final class NodeClass extends FieldIntrospection {
+public final class NodeClass<T> extends FieldIntrospection {
 
     private static final Object GetNodeClassLock = new Object();
 
@@ -73,11 +73,11 @@
     /**
      * Gets the {@link NodeClass} associated with a given {@link Class}.
      */
-    @SuppressWarnings("unchecked")
-    public static NodeClass get(Class<?> c) {
+    @SuppressWarnings({"unchecked", "rawtypes"})
+    public static <T> NodeClass<T> get(Class<T> c) {
         Class<? extends Node> key = (Class<? extends Node>) c;
 
-        NodeClass value = (NodeClass) allClasses.get(key);
+        NodeClass<?> value = (NodeClass<?>) allClasses.get(key);
         // The fact that {@link ConcurrentHashMap#put} and {@link ConcurrentHashMap#get}
         // are used makes the double-checked locking idiom work.
         if (value == null) {
@@ -85,10 +85,10 @@
             // both FieldIntrospection.allClasses and NodeClass.nextIterableId.
             synchronized (GetNodeClassLock) {
                 try (TimerCloseable t = Init.start()) {
-                    value = (NodeClass) allClasses.get(key);
+                    value = (NodeClass<?>) allClasses.get(key);
                     if (value == null) {
                         Class<?> superclass = c.getSuperclass();
-                        NodeClass superNodeClass = null;
+                        NodeClass<?> superNodeClass = null;
                         if (superclass != NODE_CLASS) {
                             // Ensure NodeClass for superclass exists
                             superNodeClass = get(superclass);
@@ -100,7 +100,7 @@
                 }
             }
         }
-        return value;
+        return (NodeClass<T>) value;
     }
 
     private static final Class<?> NODE_CLASS = Node.class;
@@ -111,7 +111,7 @@
 
     private final InputEdges inputs;
     private final SuccessorEdges successors;
-    private final NodeClass superNodeClass;
+    private final NodeClass<?> superNodeClass;
 
     private final boolean canGVN;
     private final int startGVNNumber;
@@ -134,11 +134,11 @@
     private final boolean isSimplifiable;
     private final boolean isLeafNode;
 
-    public NodeClass(Class<?> clazz, NodeClass superNodeClass) {
+    public NodeClass(Class<?> clazz, NodeClass<?> superNodeClass) {
         this(clazz, superNodeClass, new FieldsScanner.DefaultCalcOffset(), null, 0);
     }
 
-    public NodeClass(Class<?> clazz, NodeClass superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) {
+    public NodeClass(Class<?> clazz, NodeClass<?> superNodeClass, FieldsScanner.CalcOffset calcOffset, int[] presetIterableIds, int presetIterableId) {
         super(clazz);
         this.superNodeClass = superNodeClass;
         assert NODE_CLASS.isAssignableFrom(clazz);
@@ -185,7 +185,7 @@
             try (TimerCloseable t1 = Init_IterableIds.start()) {
                 this.iterableId = nextIterableId++;
 
-                NodeClass snc = superNodeClass;
+                NodeClass<?> snc = superNodeClass;
                 while (snc != null && IterableNodeType.class.isAssignableFrom(snc.getClazz())) {
                     assert !containsId(this.iterableId, snc.iterableIds);
                     snc.iterableIds = Arrays.copyOf(snc.iterableIds, snc.iterableIds.length + 1);
@@ -316,7 +316,7 @@
         int directInputs;
         int directSuccessors;
 
-        protected NodeFieldsScanner(FieldsScanner.CalcOffset calc, NodeClass superNodeClass) {
+        protected NodeFieldsScanner(FieldsScanner.CalcOffset calc, NodeClass<?> superNodeClass) {
             super(calc);
             if (superNodeClass != null) {
                 translateInto(superNodeClass.inputs, inputs);
@@ -564,7 +564,7 @@
         return true;
     }
 
-    public boolean isValid(Position pos, NodeClass from, Edges fromEdges) {
+    public boolean isValid(Position pos, NodeClass<?> from, Edges fromEdges) {
         if (this == from) {
             return true;
         }
@@ -702,7 +702,7 @@
         // re-wire inputs
         for (Node oldNode : nodes) {
             Node node = newNodes.get(oldNode);
-            NodeClass nodeClass = node.getNodeClass();
+            NodeClass<?> nodeClass = node.getNodeClass();
             if (replacements == null || replacements.replacement(oldNode) == oldNode) {
                 nodeClass.updateInputSuccInPlace(node, replacementClosure);
             } else {
@@ -746,8 +746,8 @@
     }
 
     private static void transferEdges(final Graph graph, final DuplicationReplacement replacements, final Map<Node, Node> newNodes, Node oldNode, Node node, Edges.Type type) {
-        NodeClass nodeClass = node.getNodeClass();
-        NodeClass oldNodeClass = oldNode.getNodeClass();
+        NodeClass<?> nodeClass = node.getNodeClass();
+        NodeClass<?> oldNodeClass = oldNode.getNodeClass();
         Edges oldEdges = oldNodeClass.getEdges(type);
         for (NodePosIterator oldIter = oldEdges.getIterable(oldNode).iterator(); oldIter.hasNext();) {
             Position pos = oldIter.nextPosition();
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/TypedGraphNodeIterator.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
     private int currentIdIndex;
     private boolean needsForward;
 
-    public TypedGraphNodeIterator(NodeClass clazz, Graph graph) {
+    public TypedGraphNodeIterator(NodeClass<?> clazz, Graph graph) {
         this.graph = graph;
         ids = clazz.iterableIds();
         currentIdIndex = 0;
--- a/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64.test/src/com/oracle/graal/hotspot/amd64/test/DataPatchInConstantsTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -155,7 +155,7 @@
 
     @NodeInfo
     private static final class LoadThroughPatchNode extends FixedWithNextNode implements LIRLowerable {
-        public static final NodeClass TYPE = NodeClass.get(LoadThroughPatchNode.class);
+        public static final NodeClass<LoadThroughPatchNode> TYPE = NodeClass.get(LoadThroughPatchNode.class);
 
         @Input protected ValueNode input;
 
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotNodeLIRBuilder.java	Mon Feb 16 17:47:43 2015 +0100
@@ -134,7 +134,7 @@
         setSaveRbp(((AMD64HotSpotLIRGenerator) gen).new SaveRbp(new NoOp(gen.getCurrentBlock(), gen.getResult().getLIR().getLIRforBlock(gen.getCurrentBlock()).size())));
         append(getSaveRbp().placeholder);
 
-        for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
+        for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) {
             Value paramValue = params[param.index()];
             assert paramValue.getLIRKind().equals(getLIRGeneratorTool().getLIRKind(param.stamp()));
             setResult(param, gen.emitMove(paramValue));
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64RawNativeCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo
 public final class AMD64RawNativeCallNode extends FixedWithNextNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(AMD64RawNativeCallNode.class);
+    public static final NodeClass<AMD64RawNativeCallNode> TYPE = NodeClass.get(AMD64RawNativeCallNode.class);
 
     protected final JavaConstant functionPointer;
     @Input NodeInputList<ValueNode> args;
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/AheadOfTimeCompilationTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -184,7 +184,7 @@
         StructuredGraph result = compile("getBoxedBoolean", true);
 
         assertDeepEquals(2, result.getNodes().filter(FloatingReadNode.class).count());
-        assertDeepEquals(1, result.getNodes(PiNode.class).count());
+        assertDeepEquals(1, result.getNodes(PiNode.TYPE).count());
         assertDeepEquals(1, getConstantNodes(result).count());
         ConstantNode constant = getConstantNodes(result).first();
         assertDeepEquals(Kind.Long, constant.getKind());
@@ -195,7 +195,7 @@
     public void testBoxedBoolean() {
         StructuredGraph result = compile("getBoxedBoolean", false);
         assertDeepEquals(0, result.getNodes().filter(FloatingReadNode.class).count());
-        assertDeepEquals(0, result.getNodes(PiNode.class).count());
+        assertDeepEquals(0, result.getNodes(PiNode.TYPE).count());
         assertDeepEquals(1, getConstantNodes(result).count());
         ConstantNode constant = getConstantNodes(result).first();
         assertDeepEquals(Kind.Object, constant.getKind());
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/ClassSubstitutionsTests.java	Mon Feb 16 17:47:43 2015 +0100
@@ -181,8 +181,8 @@
 
     private void testConstantReturn(String name, Object value) {
         StructuredGraph result = test(name);
-        ReturnNode ret = result.getNodes(ReturnNode.class).first();
-        assertDeepEquals(1, result.getNodes(ReturnNode.class).count());
+        ReturnNode ret = result.getNodes(ReturnNode.TYPE).first();
+        assertDeepEquals(1, result.getNodes(ReturnNode.TYPE).count());
 
         assertDeepEquals(true, ret.result().isConstant());
         assertDeepEquals(value, ret.result().asJavaConstant().asBoxedPrimitive());
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/DataPatchTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -95,7 +95,7 @@
     @NodeInfo
     private static final class ConstantFoldBarrier extends FloatingNode implements LIRLowerable {
 
-        public static final NodeClass TYPE = NodeClass.get(ConstantFoldBarrier.class);
+        public static final NodeClass<ConstantFoldBarrier> TYPE = NodeClass.get(ConstantFoldBarrier.class);
         @Input protected ValueNode input;
 
         public ConstantFoldBarrier(ValueNode input) {
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeClassSubstitutionsTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeClassSubstitutionsTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
         test("get", ValueNode.class);
     }
 
-    public static NodeClass get(Class<?> c) {
+    public static NodeClass<?> get(Class<?> c) {
         return NodeClass.get(c);
     }
 }
--- a/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot.test/src/com/oracle/graal/hotspot/test/HotSpotNodeSubstitutionsTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
         test("getNodeClass", ConstantNode.forInt(42, graph));
     }
 
-    public static NodeClass getNodeClass(Node n) {
+    public static NodeClass<?> getNodeClass(Node n) {
         return n.getNodeClass();
     }
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/debug/BenchmarkCounters.java	Mon Feb 16 17:47:43 2015 +0100
@@ -390,7 +390,7 @@
     @NodeInfo(nameTemplate = "CounterIndex")
     private static final class CounterIndexNode extends FloatingNode implements LIRLowerable {
 
-        public static final NodeClass TYPE = NodeClass.get(CounterIndexNode.class);
+        public static final NodeClass<CounterIndexNode> TYPE = NodeClass.get(CounterIndexNode.class);
         protected final Object counter;
         protected final int countersSize;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java	Mon Feb 16 17:47:43 2015 +0100
@@ -356,7 +356,7 @@
 
             // mirroring the calculations in c1_GraphBuilder.cpp (setup_osr_entry_block)
             int localsOffset = (graph.method().getMaxLocals() - 1) * 8;
-            for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.class)) {
+            for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.TYPE)) {
                 int size = osrLocal.getKind().getSlotCount();
                 int offset = localsOffset - (osrLocal.index() + size - 1) * 8;
                 IndexedLocationNode location = graph.unique(new IndexedLocationNode(ANY_LOCATION, offset, ConstantNode.forLong(0, graph), 1));
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/AllocaNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class AllocaNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AllocaNode.class);
+    public static final NodeClass<AllocaNode> TYPE = NodeClass.get(AllocaNode.class);
     /**
      * The number of slots in block.
      */
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ArrayRangeWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,11 +29,11 @@
 @NodeInfo
 public abstract class ArrayRangeWriteBarrier extends WriteBarrier {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayRangeWriteBarrier.class);
+    public static final NodeClass<ArrayRangeWriteBarrier> TYPE = NodeClass.get(ArrayRangeWriteBarrier.class);
     @Input ValueNode startIndex;
     @Input ValueNode length;
 
-    protected ArrayRangeWriteBarrier(NodeClass c, ValueNode object, ValueNode startIndex, ValueNode length) {
+    protected ArrayRangeWriteBarrier(NodeClass<?> c, ValueNode object, ValueNode startIndex, ValueNode length) {
         super(c, object, null, null, true);
         this.startIndex = startIndex;
         this.length = length;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/BeginLockScopeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class BeginLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorEnter, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(BeginLockScopeNode.class);
+    public static final NodeClass<BeginLockScopeNode> TYPE = NodeClass.get(BeginLockScopeNode.class);
     protected int lockDepth;
 
     public BeginLockScopeNode(int lockDepth) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CStringNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class CStringNode extends FloatingNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(CStringNode.class);
+    public static final NodeClass<CStringNode> TYPE = NodeClass.get(CStringNode.class);
     protected final String string;
 
     public CStringNode(String string) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassCastNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class ClassCastNode extends MacroStateSplitNode implements Canonicalizable.Binary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassCastNode.class);
+    public static final NodeClass<ClassCastNode> TYPE = NodeClass.get(ClassCastNode.class);
 
     public ClassCastNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetClassLoader0Node.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public final class ClassGetClassLoader0Node extends MacroStateSplitNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassGetClassLoader0Node.class);
+    public static final NodeClass<ClassGetClassLoader0Node> TYPE = NodeClass.get(ClassGetClassLoader0Node.class);
 
     public ClassGetClassLoader0Node(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetComponentTypeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class ClassGetComponentTypeNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassGetComponentTypeNode.class);
+    public static final NodeClass<ClassGetComponentTypeNode> TYPE = NodeClass.get(ClassGetComponentTypeNode.class);
 
     public ClassGetComponentTypeNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetModifiersNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public final class ClassGetModifiersNode extends MacroNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(ClassGetModifiersNode.class);
+    public static final NodeClass<ClassGetModifiersNode> TYPE = NodeClass.get(ClassGetModifiersNode.class);
 
     public ClassGetModifiersNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassGetSuperclassNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class ClassGetSuperclassNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassGetSuperclassNode.class);
+    public static final NodeClass<ClassGetSuperclassNode> TYPE = NodeClass.get(ClassGetSuperclassNode.class);
 
     public ClassGetSuperclassNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class ClassIsArrayNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassIsArrayNode.class);
+    public static final NodeClass<ClassIsArrayNode> TYPE = NodeClass.get(ClassIsArrayNode.class);
 
     public ClassIsArrayNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsInterfaceNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class ClassIsInterfaceNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassIsInterfaceNode.class);
+    public static final NodeClass<ClassIsInterfaceNode> TYPE = NodeClass.get(ClassIsInterfaceNode.class);
 
     public ClassIsInterfaceNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/ClassIsPrimitiveNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class ClassIsPrimitiveNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassIsPrimitiveNode.class);
+    public static final NodeClass<ClassIsPrimitiveNode> TYPE = NodeClass.get(ClassIsPrimitiveNode.class);
 
     public ClassIsPrimitiveNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CompressionNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -43,7 +43,7 @@
 @NodeInfo(nameTemplate = "{p#op/s}")
 public final class CompressionNode extends UnaryNode implements ConvertNode, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(CompressionNode.class);
+    public static final NodeClass<CompressionNode> TYPE = NodeClass.get(CompressionNode.class);
 
     public enum CompressionOp {
         Compress,
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentJavaThreadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
  */
 @NodeInfo
 public final class CurrentJavaThreadNode extends FloatingNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(CurrentJavaThreadNode.class);
+    public static final NodeClass<CurrentJavaThreadNode> TYPE = NodeClass.get(CurrentJavaThreadNode.class);
 
     protected LIRKind wordKind;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/CurrentLockNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo
 public final class CurrentLockNode extends FixedWithNextNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(CurrentLockNode.class);
+    public static final NodeClass<CurrentLockNode> TYPE = NodeClass.get(CurrentLockNode.class);
 
     protected int lockDepth;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizationFetchUnrollInfoCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class DeoptimizationFetchUnrollInfoCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi {
 
-    public static final NodeClass TYPE = NodeClass.get(DeoptimizationFetchUnrollInfoCallNode.class);
+    public static final NodeClass<DeoptimizationFetchUnrollInfoCallNode> TYPE = NodeClass.get(DeoptimizationFetchUnrollInfoCallNode.class);
     @Input SaveAllRegistersNode registerSaver;
     protected final ForeignCallsProvider foreignCalls;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizeCallerNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(shortName = "DeoptCaller", nameTemplate = "DeoptCaller {p#reason/s}")
 public final class DeoptimizeCallerNode extends ControlSinkNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DeoptimizeCallerNode.class);
+    public static final NodeClass<DeoptimizeCallerNode> TYPE = NodeClass.get(DeoptimizeCallerNode.class);
     protected final DeoptimizationAction action;
     protected final DeoptimizationReason reason;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DeoptimizingStubCall.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,9 +30,9 @@
 @NodeInfo
 public abstract class DeoptimizingStubCall extends DeoptimizingFixedWithNextNode {
 
-    public static final NodeClass TYPE = NodeClass.get(DeoptimizingStubCall.class);
+    public static final NodeClass<DeoptimizingStubCall> TYPE = NodeClass.get(DeoptimizingStubCall.class);
 
-    public DeoptimizingStubCall(NodeClass c, Stamp stamp) {
+    public DeoptimizingStubCall(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DimensionsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo
 public final class DimensionsNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DimensionsNode.class);
+    public static final NodeClass<DimensionsNode> TYPE = NodeClass.get(DimensionsNode.class);
     protected final int rank;
 
     public DimensionsNode(int rank) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/DirectCompareAndSwapNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class DirectCompareAndSwapNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(DirectCompareAndSwapNode.class);
+    public static final NodeClass<DirectCompareAndSwapNode> TYPE = NodeClass.get(DirectCompareAndSwapNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
     @Input ValueNode expectedValue;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EndLockScopeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class EndLockScopeNode extends AbstractMemoryCheckpoint implements LIRLowerable, MonitorExit, MemoryCheckpoint.Single {
-    public static final NodeClass TYPE = NodeClass.get(EndLockScopeNode.class);
+    public static final NodeClass<EndLockScopeNode> TYPE = NodeClass.get(EndLockScopeNode.class);
 
     public EndLockScopeNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/EnterUnpackFramesStackFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class EnterUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(EnterUnpackFramesStackFrameNode.class);
+    public static final NodeClass<EnterUnpackFramesStackFrameNode> TYPE = NodeClass.get(EnterUnpackFramesStackFrameNode.class);
 
     @Input ValueNode framePc;
     @Input ValueNode senderSp;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePostWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -28,7 +28,7 @@
 
 @NodeInfo
 public class G1ArrayRangePostWriteBarrier extends ArrayRangeWriteBarrier {
-    public static final NodeClass TYPE = NodeClass.get(G1ArrayRangePostWriteBarrier.class);
+    public static final NodeClass<G1ArrayRangePostWriteBarrier> TYPE = NodeClass.get(G1ArrayRangePostWriteBarrier.class);
 
     public G1ArrayRangePostWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
         super(TYPE, object, startIndex, length);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ArrayRangePreWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -28,7 +28,7 @@
 
 @NodeInfo
 public final class G1ArrayRangePreWriteBarrier extends ArrayRangeWriteBarrier {
-    public static final NodeClass TYPE = NodeClass.get(G1ArrayRangePreWriteBarrier.class);
+    public static final NodeClass<G1ArrayRangePreWriteBarrier> TYPE = NodeClass.get(G1ArrayRangePreWriteBarrier.class);
 
     public G1ArrayRangePreWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
         super(TYPE, object, startIndex, length);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PostWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,14 +30,14 @@
 @NodeInfo
 public class G1PostWriteBarrier extends WriteBarrier {
 
-    public static final NodeClass TYPE = NodeClass.get(G1PostWriteBarrier.class);
+    public static final NodeClass<G1PostWriteBarrier> TYPE = NodeClass.get(G1PostWriteBarrier.class);
     protected final boolean alwaysNull;
 
     public G1PostWriteBarrier(ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
         this(TYPE, object, value, location, precise, alwaysNull);
     }
 
-    protected G1PostWriteBarrier(NodeClass c, ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
+    protected G1PostWriteBarrier(NodeClass<?> c, ValueNode object, ValueNode value, LocationNode location, boolean precise, boolean alwaysNull) {
         super(c, object, value, location, precise);
         this.alwaysNull = alwaysNull;
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1PreWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public final class G1PreWriteBarrier extends WriteBarrier implements DeoptimizingNode.DeoptBefore {
 
-    public static final NodeClass TYPE = NodeClass.get(G1PreWriteBarrier.class);
+    public static final NodeClass<G1PreWriteBarrier> TYPE = NodeClass.get(G1PreWriteBarrier.class);
 
     @OptionalInput(InputType.State) FrameState stateBefore;
     protected final boolean nullCheck;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/G1ReferentFieldReadBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
  */
 @NodeInfo
 public final class G1ReferentFieldReadBarrier extends WriteBarrier {
-    public static final NodeClass TYPE = NodeClass.get(G1ReferentFieldReadBarrier.class);
+    public static final NodeClass<G1ReferentFieldReadBarrier> TYPE = NodeClass.get(G1ReferentFieldReadBarrier.class);
 
     protected final boolean doLoad;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/GetObjectAddressNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo
 public final class GetObjectAddressNode extends FixedWithNextNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(GetObjectAddressNode.class);
+    public static final NodeClass<GetObjectAddressNode> TYPE = NodeClass.get(GetObjectAddressNode.class);
 
     @Input ValueNode object;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotDirectCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 
 @NodeInfo
 public final class HotSpotDirectCallTargetNode extends DirectCallTargetNode {
-    public static final NodeClass TYPE = NodeClass.get(HotSpotDirectCallTargetNode.class);
+    public static final NodeClass<HotSpotDirectCallTargetNode> TYPE = NodeClass.get(HotSpotDirectCallTargetNode.class);
 
     public HotSpotDirectCallTargetNode(List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, Type callType, InvokeKind invokeKind) {
         super(TYPE, arguments, returnStamp, signature, target, callType, invokeKind);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/HotSpotIndirectCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 
 @NodeInfo
 public final class HotSpotIndirectCallTargetNode extends IndirectCallTargetNode {
-    public static final NodeClass TYPE = NodeClass.get(HotSpotIndirectCallTargetNode.class);
+    public static final NodeClass<HotSpotIndirectCallTargetNode> TYPE = NodeClass.get(HotSpotIndirectCallTargetNode.class);
 
     @Input ValueNode metaspaceMethod;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/JumpToExceptionHandlerInCallerNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class JumpToExceptionHandlerInCallerNode extends ControlSinkNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(JumpToExceptionHandlerInCallerNode.class);
+    public static final NodeClass<JumpToExceptionHandlerInCallerNode> TYPE = NodeClass.get(JumpToExceptionHandlerInCallerNode.class);
     @Input ValueNode handlerInCallerPc;
     @Input ValueNode exception;
     @Input ValueNode exceptionPc;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveCurrentStackFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class LeaveCurrentStackFrameNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LeaveCurrentStackFrameNode.class);
+    public static final NodeClass<LeaveCurrentStackFrameNode> TYPE = NodeClass.get(LeaveCurrentStackFrameNode.class);
     @Input SaveAllRegistersNode registerSaver;
 
     public LeaveCurrentStackFrameNode(ValueNode registerSaver) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveDeoptimizedStackFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class LeaveDeoptimizedStackFrameNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LeaveDeoptimizedStackFrameNode.class);
+    public static final NodeClass<LeaveDeoptimizedStackFrameNode> TYPE = NodeClass.get(LeaveDeoptimizedStackFrameNode.class);
     @Input ValueNode frameSize;
     @Input ValueNode initialInfo;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LeaveUnpackFramesStackFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class LeaveUnpackFramesStackFrameNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LeaveUnpackFramesStackFrameNode.class);
+    public static final NodeClass<LeaveUnpackFramesStackFrameNode> TYPE = NodeClass.get(LeaveUnpackFramesStackFrameNode.class);
     @Input SaveAllRegistersNode registerSaver;
 
     public LeaveUnpackFramesStackFrameNode(ValueNode registerSaver) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/LoadIndexedPointerNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 @NodeInfo
 public final class LoadIndexedPointerNode extends LoadIndexedNode {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadIndexedPointerNode.class);
+    public static final NodeClass<LoadIndexedPointerNode> TYPE = NodeClass.get(LoadIndexedPointerNode.class);
 
     public LoadIndexedPointerNode(Stamp stamp, ValueNode array, ValueNode index) {
         super(TYPE, stamp, array, index, Kind.Illegal);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/MonitorCounterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public final class MonitorCounterNode extends FloatingNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(MonitorCounterNode.class);
+    public static final NodeClass<MonitorCounterNode> TYPE = NodeClass.get(MonitorCounterNode.class);
 
     public MonitorCounterNode() {
         super(TYPE, null);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewArrayStubCall.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class NewArrayStubCall extends DeoptimizingStubCall implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(NewArrayStubCall.class);
+    public static final NodeClass<NewArrayStubCall> TYPE = NodeClass.get(NewArrayStubCall.class);
     private static final Stamp defaultStamp = StampFactory.objectNonNull();
 
     @Input ValueNode hub;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewInstanceStubCall.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class NewInstanceStubCall extends DeoptimizingStubCall implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(NewInstanceStubCall.class);
+    public static final NodeClass<NewInstanceStubCall> TYPE = NodeClass.get(NewInstanceStubCall.class);
     private static final Stamp defaultStamp = StampFactory.objectNonNull();
 
     @Input ValueNode hub;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/NewMultiArrayStubCall.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class NewMultiArrayStubCall extends ForeignCallNode {
 
-    public static final NodeClass TYPE = NodeClass.get(NewMultiArrayStubCall.class);
+    public static final NodeClass<NewMultiArrayStubCall> TYPE = NodeClass.get(NewMultiArrayStubCall.class);
     private static final Stamp defaultStamp = StampFactory.objectNonNull();
 
     @Input ValueNode hub;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PatchReturnAddressNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class PatchReturnAddressNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(PatchReturnAddressNode.class);
+    public static final NodeClass<PatchReturnAddressNode> TYPE = NodeClass.get(PatchReturnAddressNode.class);
     @Input ValueNode address;
 
     public PatchReturnAddressNode(ValueNode address) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PrefetchAllocateNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public final class PrefetchAllocateNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(PrefetchAllocateNode.class);
+    public static final NodeClass<PrefetchAllocateNode> TYPE = NodeClass.get(PrefetchAllocateNode.class);
     @Input ValueNode distance;
     @Input ValueNode address;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/PushInterpreterFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class PushInterpreterFrameNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(PushInterpreterFrameNode.class);
+    public static final NodeClass<PushInterpreterFrameNode> TYPE = NodeClass.get(PushInterpreterFrameNode.class);
     @Input ValueNode framePc;
     @Input ValueNode frameSize;
     @Input ValueNode senderSp;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SaveAllRegistersNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class SaveAllRegistersNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(SaveAllRegistersNode.class);
+    public static final NodeClass<SaveAllRegistersNode> TYPE = NodeClass.get(SaveAllRegistersNode.class);
     protected SaveRegistersOp saveRegistersOp;
 
     public SaveAllRegistersNode() {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialArrayRangeWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,7 +29,7 @@
 @NodeInfo
 public final class SerialArrayRangeWriteBarrier extends ArrayRangeWriteBarrier {
 
-    public static final NodeClass TYPE = NodeClass.get(SerialArrayRangeWriteBarrier.class);
+    public static final NodeClass<SerialArrayRangeWriteBarrier> TYPE = NodeClass.get(SerialArrayRangeWriteBarrier.class);
 
     public SerialArrayRangeWriteBarrier(ValueNode object, ValueNode startIndex, ValueNode length) {
         super(TYPE, object, startIndex, length);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SerialWriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,14 +30,14 @@
 @NodeInfo
 public class SerialWriteBarrier extends WriteBarrier {
 
-    public static final NodeClass TYPE = NodeClass.get(SerialWriteBarrier.class);
+    public static final NodeClass<SerialWriteBarrier> TYPE = NodeClass.get(SerialWriteBarrier.class);
     protected final boolean alwaysNull;
 
     public SerialWriteBarrier(ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
         this(TYPE, object, location, precise, alwaysNull);
     }
 
-    protected SerialWriteBarrier(NodeClass c, ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
+    protected SerialWriteBarrier(NodeClass<?> c, ValueNode object, LocationNode location, boolean precise, boolean alwaysNull) {
         super(c, object, null, location, precise);
         this.alwaysNull = alwaysNull;
     }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo(allowedUsageTypes = {InputType.Value, InputType.Anchor, InputType.Guard})
 public final class SnippetAnchorNode extends FixedWithNextNode implements Simplifiable, GuardingNode {
-    public static final NodeClass TYPE = NodeClass.get(SnippetAnchorNode.class);
+    public static final NodeClass<SnippetAnchorNode> TYPE = NodeClass.get(SnippetAnchorNode.class);
 
     public SnippetAnchorNode() {
         super(TYPE, StampFactory.object());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/SnippetLocationProxyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Association, InputType.Value})
 public final class SnippetLocationProxyNode extends FloatingNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(SnippetLocationProxyNode.class);
+    public static final NodeClass<SnippetLocationProxyNode> TYPE = NodeClass.get(SnippetLocationProxyNode.class);
     @Input(InputType.Unchecked) ValueNode location;
 
     public SnippetLocationProxyNode(ValueNode location) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo(nameTemplate = "StubForeignCall#{p#descriptor/s}", allowedUsageTypes = {InputType.Memory})
 public final class StubForeignCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi {
 
-    public static final NodeClass TYPE = NodeClass.get(StubForeignCallNode.class);
+    public static final NodeClass<StubForeignCallNode> TYPE = NodeClass.get(StubForeignCallNode.class);
     @Input NodeInputList<ValueNode> arguments;
     protected final ForeignCallsProvider foreignCalls;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubStartNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class StubStartNode extends StartNode {
 
-    public static final NodeClass TYPE = NodeClass.get(StubStartNode.class);
+    public static final NodeClass<StubStartNode> TYPE = NodeClass.get(StubStartNode.class);
     protected final Stub stub;
 
     public StubStartNode(Stub stub) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/UncommonTrapCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class UncommonTrapCallNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Multi {
 
-    public static final NodeClass TYPE = NodeClass.get(UncommonTrapCallNode.class);
+    public static final NodeClass<UncommonTrapCallNode> TYPE = NodeClass.get(UncommonTrapCallNode.class);
     @Input ValueNode trapRequest;
     @Input SaveAllRegistersNode registerSaver;
     protected final ForeignCallsProvider foreignCalls;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/VMErrorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class VMErrorNode extends DeoptimizingStubCall implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(VMErrorNode.class);
+    public static final NodeClass<VMErrorNode> TYPE = NodeClass.get(VMErrorNode.class);
     protected final String format;
     @Input ValueNode value;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/WriteBarrier.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,13 +32,13 @@
 @NodeInfo
 public abstract class WriteBarrier extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(WriteBarrier.class);
+    public static final NodeClass<WriteBarrier> TYPE = NodeClass.get(WriteBarrier.class);
     @Input protected ValueNode object;
     @OptionalInput protected ValueNode value;
     @OptionalInput(InputType.Association) protected LocationNode location;
     protected final boolean precise;
 
-    protected WriteBarrier(NodeClass c, ValueNode object, ValueNode value, LocationNode location, boolean precise) {
+    protected WriteBarrier(NodeClass<?> c, ValueNode object, ValueNode value, LocationNode location, boolean precise) {
         super(c, StampFactory.forVoid());
         this.object = object;
         this.value = value;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/phases/OnStackReplacementPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -49,7 +49,7 @@
         Debug.dump(graph, "OnStackReplacement initial");
         EntryMarkerNode osr;
         do {
-            NodeIterable<EntryMarkerNode> osrNodes = graph.getNodes(EntryMarkerNode.class);
+            NodeIterable<EntryMarkerNode> osrNodes = graph.getNodes(EntryMarkerNode.TYPE);
             osr = osrNodes.first();
             if (osr == null) {
                 throw new BailoutException("No OnStackReplacementNode generated");
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public final class CallSiteTargetNode extends MacroStateSplitNode implements Canonicalizable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(CallSiteTargetNode.class);
+    public static final NodeClass<CallSiteTargetNode> TYPE = NodeClass.get(CallSiteTargetNode.class);
 
     public CallSiteTargetNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableAddressNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 
 @NodeInfo
 public final class CardTableAddressNode extends FloatingNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(CardTableAddressNode.class);
+    public static final NodeClass<CardTableAddressNode> TYPE = NodeClass.get(CardTableAddressNode.class);
 
     public CardTableAddressNode() {
         super(TYPE, StampFactory.forKind(Kind.Long));
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CardTableShiftNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 
 @NodeInfo
 public final class CardTableShiftNode extends FloatingNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(CardTableShiftNode.class);
+    public static final NodeClass<CardTableShiftNode> TYPE = NodeClass.get(CardTableShiftNode.class);
 
     public CardTableShiftNode() {
         super(TYPE, StampFactory.intValue());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ClassGetHubNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -43,7 +43,7 @@
  */
 @NodeInfo
 public final class ClassGetHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode {
-    public static final NodeClass TYPE = NodeClass.get(ClassGetHubNode.class);
+    public static final NodeClass<ClassGetHubNode> TYPE = NodeClass.get(ClassGetHubNode.class);
     @Input protected ValueNode clazz;
 
     public ClassGetHubNode(ValueNode clazz) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CompositeValueClassSubstitutions.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
     @NodeInfo
     public static final class CompositeValueClassGetNode extends PureFunctionMacroNode {
 
-        public static final NodeClass TYPE = NodeClass.get(CompositeValueClassGetNode.class);
+        public static final NodeClass<CompositeValueClassGetNode> TYPE = NodeClass.get(CompositeValueClassGetNode.class);
 
         public CompositeValueClassGetNode(Invoke invoke) {
             super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeClassSubstitutions.java	Mon Feb 16 17:47:43 2015 +0100
@@ -46,7 +46,7 @@
      */
     @NodeInfo
     public static final class NodeClassGetNode extends PureFunctionMacroNode {
-        public static final NodeClass TYPE = NodeClass.get(NodeClassGetNode.class);
+        public static final NodeClass<NodeClassGetNode> TYPE = NodeClass.get(NodeClassGetNode.class);
 
         public NodeClassGetNode(Invoke invoke) {
             super(TYPE, invoke);
@@ -69,5 +69,5 @@
      * initialization barrier).
      */
     @MacroSubstitution(isStatic = true, forced = true, macro = NodeClassGetNode.class)
-    public static native NodeClass get(Class<?> c);
+    public static native NodeClass<?> get(Class<?> c);
 }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNodeSubstitutions.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
      * pointed to by {@code node}'s header.
      */
     @MethodSubstitution(isStatic = false)
-    public static NodeClass getNodeClass(final Node node) {
+    public static NodeClass<?> getNodeClass(final Node node) {
         // HotSpot creates the NodeClass for each Node subclass while initializing it
         // so we are guaranteed to read a non-null value here. As long as NodeClass
         // is final, the stamp of the PiNode below will automatically be exact.
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HubGetClassNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public final class HubGetClassNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, ConvertNode {
-    public static final NodeClass TYPE = NodeClass.get(HubGetClassNode.class);
+    public static final NodeClass<HubGetClassNode> TYPE = NodeClass.get(HubGetClassNode.class);
     @Input protected ValueNode hub;
 
     public HubGetClassNode(@InjectedNodeParameter MetaAccessProvider metaAccess, ValueNode hub) {
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/KlassLayoutHelperNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public final class KlassLayoutHelperNode extends FloatingGuardedNode implements Canonicalizable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(KlassLayoutHelperNode.class);
+    public static final NodeClass<KlassLayoutHelperNode> TYPE = NodeClass.get(KlassLayoutHelperNode.class);
     @Input protected ValueNode klass;
     protected final HotSpotVMConfig config;
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MethodHandleNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -44,7 +44,7 @@
  */
 @NodeInfo
 public final class MethodHandleNode extends MacroStateSplitNode implements Simplifiable {
-    public static final NodeClass TYPE = NodeClass.get(MethodHandleNode.class);
+    public static final NodeClass<MethodHandleNode> TYPE = NodeClass.get(MethodHandleNode.class);
 
     // Replacement method data
     protected ResolvedJavaMethod replacementTargetMethod;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java	Mon Feb 16 17:47:43 2015 +0100
@@ -504,7 +504,7 @@
                     StructuredGraph inlineeGraph = providers.getReplacements().getSnippet(initCounter.getMethod());
                     InliningUtil.inline(invoke, inlineeGraph, false, null);
 
-                    List<ReturnNode> rets = graph.getNodes(ReturnNode.class).snapshot();
+                    List<ReturnNode> rets = graph.getNodes(ReturnNode.TYPE).snapshot();
                     for (ReturnNode ret : rets) {
                         returnType = checkCounter.getMethod().getSignature().getReturnType(checkCounter.getMethod().getDeclaringClass());
                         String msg = "unbalanced monitors in " + graph.method().format("%H.%n(%p)") + ", count = %d";
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo
 public final class ObjectCloneNode extends BasicObjectCloneNode implements VirtualizableAllocation, ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(ObjectCloneNode.class);
+    public static final NodeClass<ObjectCloneNode> TYPE = NodeClass.get(ObjectCloneNode.class);
 
     public ObjectCloneNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class ReflectionGetCallerClassNode extends MacroStateSplitNode implements Canonicalizable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ReflectionGetCallerClassNode.class);
+    public static final NodeClass<ReflectionGetCallerClassNode> TYPE = NodeClass.get(ReflectionGetCallerClassNode.class);
 
     public ReflectionGetCallerClassNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/SystemIdentityHashCodeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public final class SystemIdentityHashCodeNode extends PureFunctionMacroNode {
 
-    public static final NodeClass TYPE = NodeClass.get(SystemIdentityHashCodeNode.class);
+    public static final NodeClass<SystemIdentityHashCodeNode> TYPE = NodeClass.get(SystemIdentityHashCodeNode.class);
 
     public SystemIdentityHashCodeNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class ArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayCopyCallNode.class);
+    public static final NodeClass<ArrayCopyCallNode> TYPE = NodeClass.get(ArrayCopyCallNode.class);
     @Input ValueNode src;
     @Input ValueNode srcPos;
     @Input ValueNode dest;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/ArrayCopyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class ArrayCopyNode extends BasicArrayCopyNode implements Virtualizable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayCopyNode.class);
+    public static final NodeClass<ArrayCopyNode> TYPE = NodeClass.get(ArrayCopyNode.class);
 
     public ArrayCopyNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/CheckcastArrayCopyCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory, InputType.Value})
 public final class CheckcastArrayCopyCallNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(CheckcastArrayCopyCallNode.class);
+    public static final NodeClass<CheckcastArrayCopyCallNode> TYPE = NodeClass.get(CheckcastArrayCopyCallNode.class);
     @Input ValueNode src;
     @Input ValueNode srcPos;
     @Input ValueNode dest;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/arraycopy/UnsafeArrayCopyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class UnsafeArrayCopyNode extends ArrayRangeWriteNode implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsafeArrayCopyNode.class);
+    public static final NodeClass<UnsafeArrayCopyNode> TYPE = NodeClass.get(UnsafeArrayCopyNode.class);
     @Input ValueNode src;
     @Input ValueNode srcPos;
     @Input ValueNode dest;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/word/PointerCastNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class PointerCastNode extends FloatingNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(PointerCastNode.class);
+    public static final NodeClass<PointerCastNode> TYPE = NodeClass.get(PointerCastNode.class);
     @Input ValueNode input;
 
     public PointerCastNode(Stamp stamp, ValueNode input) {
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -136,7 +136,7 @@
                 parser.connectLoopEndToBegin();
 
                 // remove dead parameters
-                for (ParameterNode param : currentGraph.getNodes(ParameterNode.class)) {
+                for (ParameterNode param : currentGraph.getNodes(ParameterNode.TYPE)) {
                     if (param.hasNoUsages()) {
                         assert param.inputs().isEmpty();
                         param.safeDelete();
@@ -1438,7 +1438,7 @@
              * </pre>
              */
             private void connectLoopEndToBegin() {
-                for (LoopBeginNode begin : currentGraph.getNodes(LoopBeginNode.class)) {
+                for (LoopBeginNode begin : currentGraph.getNodes(LoopBeginNode.TYPE)) {
                     if (begin.loopEnds().isEmpty()) {
                         assert begin.forwardEndCount() == 1;
                         currentGraph.reduceDegenerateLoopBegin(begin);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractBeginNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,13 +38,13 @@
 @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor})
 public abstract class AbstractBeginNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, GuardingNode, AnchoringNode, IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractBeginNode.class);
+    public static final NodeClass<AbstractBeginNode> TYPE = NodeClass.get(AbstractBeginNode.class);
 
-    protected AbstractBeginNode(NodeClass c) {
+    protected AbstractBeginNode(NodeClass<?> c) {
         this(c, StampFactory.forVoid());
     }
 
-    protected AbstractBeginNode(NodeClass c, Stamp stamp) {
+    protected AbstractBeginNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractDeoptimizeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,10 +36,10 @@
 @NodeInfo
 public abstract class AbstractDeoptimizeNode extends ControlSinkNode implements IterableNodeType, DeoptimizingNode.DeoptBefore {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractDeoptimizeNode.class);
+    public static final NodeClass<AbstractDeoptimizeNode> TYPE = NodeClass.get(AbstractDeoptimizeNode.class);
     @OptionalInput(InputType.State) FrameState stateBefore;
 
-    protected AbstractDeoptimizeNode(NodeClass c, FrameState stateBefore) {
+    protected AbstractDeoptimizeNode(NodeClass<?> c, FrameState stateBefore) {
         super(c, StampFactory.forVoid());
         this.stateBefore = stateBefore;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractEndNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,9 +32,9 @@
 @NodeInfo
 public abstract class AbstractEndNode extends FixedNode implements IterableNodeType, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractEndNode.class);
+    public static final NodeClass<AbstractEndNode> TYPE = NodeClass.get(AbstractEndNode.class);
 
-    protected AbstractEndNode(NodeClass c) {
+    protected AbstractEndNode(NodeClass<?> c) {
         super(c, StampFactory.forVoid());
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractFixedGuardNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public abstract class AbstractFixedGuardNode extends DeoptimizingFixedWithNextNode implements Simplifiable, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractFixedGuardNode.class);
+    public static final NodeClass<AbstractFixedGuardNode> TYPE = NodeClass.get(AbstractFixedGuardNode.class);
     @Input(InputType.Condition) protected LogicNode condition;
     protected final DeoptimizationReason reason;
     protected final DeoptimizationAction action;
@@ -48,7 +48,7 @@
         condition = x;
     }
 
-    protected AbstractFixedGuardNode(NodeClass c, LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
+    protected AbstractFixedGuardNode(NodeClass<?> c, LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action, boolean negated) {
         super(c, StampFactory.forVoid());
         this.action = action;
         this.negated = negated;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractLocalNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,10 +30,10 @@
 @NodeInfo
 public abstract class AbstractLocalNode extends FloatingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractLocalNode.class);
+    public static final NodeClass<AbstractLocalNode> TYPE = NodeClass.get(AbstractLocalNode.class);
     protected final int index;
 
-    protected AbstractLocalNode(NodeClass c, int index, Stamp stamp) {
+    protected AbstractLocalNode(NodeClass<?> c, int index, Stamp stamp) {
         super(c, stamp);
         this.index = index;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMemoryCheckpoint.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,13 +33,13 @@
 @NodeInfo
 public abstract class AbstractMemoryCheckpoint extends AbstractStateSplit implements MemoryCheckpoint {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractMemoryCheckpoint.class);
+    public static final NodeClass<AbstractMemoryCheckpoint> TYPE = NodeClass.get(AbstractMemoryCheckpoint.class);
 
-    protected AbstractMemoryCheckpoint(NodeClass c, Stamp stamp) {
+    protected AbstractMemoryCheckpoint(NodeClass<?> c, Stamp stamp) {
         this(c, stamp, null);
     }
 
-    protected AbstractMemoryCheckpoint(NodeClass c, Stamp stamp, FrameState stateAfter) {
+    protected AbstractMemoryCheckpoint(NodeClass<?> c, Stamp stamp, FrameState stateAfter) {
         super(c, stamp, stateAfter);
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractMergeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,9 +39,9 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public abstract class AbstractMergeNode extends BeginStateSplitNode implements IterableNodeType, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(AbstractMergeNode.class);
+    public static final NodeClass<AbstractMergeNode> TYPE = NodeClass.get(AbstractMergeNode.class);
 
-    protected AbstractMergeNode(NodeClass c) {
+    protected AbstractMergeNode(NodeClass<?> c) {
         super(c);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/AbstractStateSplit.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 @NodeInfo
 public abstract class AbstractStateSplit extends FixedWithNextNode implements StateSplit {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractStateSplit.class);
+    public static final NodeClass<AbstractStateSplit> TYPE = NodeClass.get(AbstractStateSplit.class);
     @OptionalInput(InputType.State) protected FrameState stateAfter;
 
     public FrameState stateAfter() {
@@ -49,11 +49,11 @@
         return true;
     }
 
-    protected AbstractStateSplit(NodeClass c, Stamp stamp) {
+    protected AbstractStateSplit(NodeClass<?> c, Stamp stamp) {
         this(c, stamp, null);
     }
 
-    protected AbstractStateSplit(NodeClass c, Stamp stamp, FrameState stateAfter) {
+    protected AbstractStateSplit(NodeClass<?> c, Stamp stamp, FrameState stateAfter) {
         super(c, stamp);
         this.stateAfter = stateAfter;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,7 +29,7 @@
 @NodeInfo
 public final class BeginNode extends AbstractBeginNode {
 
-    public static final NodeClass TYPE = NodeClass.get(BeginNode.class);
+    public static final NodeClass<BeginNode> TYPE = NodeClass.get(BeginNode.class);
 
     public BeginNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BeginStateSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,14 +36,14 @@
 @NodeInfo
 public abstract class BeginStateSplitNode extends AbstractBeginNode implements StateSplit {
 
-    public static final NodeClass TYPE = NodeClass.get(BeginStateSplitNode.class);
+    public static final NodeClass<BeginStateSplitNode> TYPE = NodeClass.get(BeginStateSplitNode.class);
     @OptionalInput(InputType.State) protected FrameState stateAfter;
 
-    protected BeginStateSplitNode(NodeClass c) {
+    protected BeginStateSplitNode(NodeClass<?> c) {
         super(c);
     }
 
-    protected BeginStateSplitNode(NodeClass c, Stamp stamp) {
+    protected BeginStateSplitNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BinaryOpLogicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public abstract class BinaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Binary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(BinaryOpLogicNode.class);
+    public static final NodeClass<BinaryOpLogicNode> TYPE = NodeClass.get(BinaryOpLogicNode.class);
     @Input protected ValueNode x;
     @Input protected ValueNode y;
 
@@ -42,7 +42,7 @@
         return y;
     }
 
-    public BinaryOpLogicNode(NodeClass c, ValueNode x, ValueNode y) {
+    public BinaryOpLogicNode(NodeClass<?> c, ValueNode x, ValueNode y) {
         super(c);
         assert x != null && y != null && x.getKind() == y.getKind();
         this.x = x;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/BreakpointNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
 @NodeInfo
 public final class BreakpointNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BreakpointNode.class);
+    public static final NodeClass<BreakpointNode> TYPE = NodeClass.get(BreakpointNode.class);
     @Input NodeInputList<ValueNode> arguments;
 
     public BreakpointNode(ValueNode[] arguments) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/CallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 
 @NodeInfo(allowedUsageTypes = {InputType.Extension})
 public abstract class CallTargetNode extends ValueNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(CallTargetNode.class);
+    public static final NodeClass<CallTargetNode> TYPE = NodeClass.get(CallTargetNode.class);
 
     public enum InvokeKind {
         Interface(false),
@@ -67,14 +67,14 @@
     protected ResolvedJavaMethod targetMethod;
     protected InvokeKind invokeKind;
 
-    protected CallTargetNode(NodeClass c, ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) {
+    protected CallTargetNode(NodeClass<?> c, ValueNode[] arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) {
         super(c, StampFactory.forVoid());
         this.targetMethod = targetMethod;
         this.invokeKind = invokeKind;
         this.arguments = new NodeInputList<>(this, arguments);
     }
 
-    protected CallTargetNode(NodeClass c, List<ValueNode> arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) {
+    protected CallTargetNode(NodeClass<?> c, List<ValueNode> arguments, ResolvedJavaMethod targetMethod, InvokeKind invokeKind) {
         super(c, StampFactory.forVoid());
         this.targetMethod = targetMethod;
         this.invokeKind = invokeKind;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConditionAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 @NodeInfo(nameTemplate = "ConditionAnchor(!={p#negated})", allowedUsageTypes = {InputType.Guard})
 public final class ConditionAnchorNode extends FixedWithNextNode implements Canonicalizable.Unary<Node>, Lowerable, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(ConditionAnchorNode.class);
+    public static final NodeClass<ConditionAnchorNode> TYPE = NodeClass.get(ConditionAnchorNode.class);
     @Input(InputType.Condition) LogicNode condition;
     protected boolean negated;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo(shortName = "Const", nameTemplate = "Const({p#rawvalue})")
 public final class ConstantNode extends FloatingNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ConstantNode.class);
+    public static final NodeClass<ConstantNode> TYPE = NodeClass.get(ConstantNode.class);
     private static final DebugMetric ConstantNodes = Debug.metric("ConstantNodes");
 
     protected final Constant value;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSinkNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -28,9 +28,9 @@
 
 @NodeInfo
 public abstract class ControlSinkNode extends FixedNode {
-    public static final NodeClass TYPE = NodeClass.get(ControlSinkNode.class);
+    public static final NodeClass<ControlSinkNode> TYPE = NodeClass.get(ControlSinkNode.class);
 
-    protected ControlSinkNode(NodeClass c, Stamp stamp) {
+    protected ControlSinkNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ControlSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,9 +32,9 @@
  */
 @NodeInfo
 public abstract class ControlSplitNode extends FixedNode implements IterableNodeType {
-    public static final NodeClass TYPE = NodeClass.get(ControlSplitNode.class);
+    public static final NodeClass<ControlSplitNode> TYPE = NodeClass.get(ControlSplitNode.class);
 
-    protected ControlSplitNode(NodeClass c, Stamp stamp) {
+    protected ControlSplitNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo(shortName = "Deopt", nameTemplate = "Deopt {p#reason/s}")
 public final class DeoptimizeNode extends AbstractDeoptimizeNode implements Lowerable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DeoptimizeNode.class);
+    public static final NodeClass<DeoptimizeNode> TYPE = NodeClass.get(DeoptimizeNode.class);
     protected final DeoptimizationAction action;
     protected final DeoptimizationReason reason;
     protected final int debugId;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DeoptimizingFixedWithNextNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,14 +29,14 @@
 @NodeInfo
 public abstract class DeoptimizingFixedWithNextNode extends FixedWithNextNode implements DeoptimizingNode.DeoptBefore {
 
-    public static final NodeClass TYPE = NodeClass.get(DeoptimizingFixedWithNextNode.class);
+    public static final NodeClass<DeoptimizingFixedWithNextNode> TYPE = NodeClass.get(DeoptimizingFixedWithNextNode.class);
     @OptionalInput(InputType.State) protected FrameState stateBefore;
 
-    protected DeoptimizingFixedWithNextNode(NodeClass c, Stamp stamp) {
+    protected DeoptimizingFixedWithNextNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
-    protected DeoptimizingFixedWithNextNode(NodeClass c, Stamp stamp, FrameState stateBefore) {
+    protected DeoptimizingFixedWithNextNode(NodeClass<?> c, Stamp stamp, FrameState stateBefore) {
         super(c, stamp);
         this.stateBefore = stateBefore;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DirectCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,9 +33,9 @@
 @NodeInfo
 public abstract class DirectCallTargetNode extends LoweredCallTargetNode {
 
-    public static final NodeClass TYPE = NodeClass.get(DirectCallTargetNode.class);
+    public static final NodeClass<DirectCallTargetNode> TYPE = NodeClass.get(DirectCallTargetNode.class);
 
-    protected DirectCallTargetNode(NodeClass c, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
+    protected DirectCallTargetNode(NodeClass<?> c, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
         super(c, arguments, returnStamp, signature, target, callType, invokeKind);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DispatchBeginNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,13 +32,13 @@
 @NodeInfo
 public class DispatchBeginNode extends BeginStateSplitNode {
 
-    public static final NodeClass TYPE = NodeClass.get(DispatchBeginNode.class);
+    public static final NodeClass<DispatchBeginNode> TYPE = NodeClass.get(DispatchBeginNode.class);
 
     public DispatchBeginNode() {
         super(TYPE);
     }
 
-    protected DispatchBeginNode(NodeClass c, Stamp stamp) {
+    protected DispatchBeginNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/DynamicDeoptimizeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public final class DynamicDeoptimizeNode extends AbstractDeoptimizeNode implements LIRLowerable, Lowerable, Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(DynamicDeoptimizeNode.class);
+    public static final NodeClass<DynamicDeoptimizeNode> TYPE = NodeClass.get(DynamicDeoptimizeNode.class);
     @Input ValueNode actionAndReason;
     @Input ValueNode speculation;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EndNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -27,7 +27,7 @@
 
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public final class EndNode extends AbstractEndNode {
-    public static final NodeClass TYPE = NodeClass.get(EndNode.class);
+    public static final NodeClass<EndNode> TYPE = NodeClass.get(EndNode.class);
 
     public EndNode() {
         super(TYPE);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/EntryMarkerNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public final class EntryMarkerNode extends BeginStateSplitNode implements IterableNodeType, Simplifiable, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(EntryMarkerNode.class);
+    public static final NodeClass<EntryMarkerNode> TYPE = NodeClass.get(EntryMarkerNode.class);
 
     public EntryMarkerNode() {
         super(TYPE);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedGuardNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo(nameTemplate = "FixedGuard(!={p#negated}) {p#reason/s}", allowedUsageTypes = {InputType.Guard})
 public final class FixedGuardNode extends AbstractFixedGuardNode implements Lowerable, IterableNodeType {
-    public static final NodeClass TYPE = NodeClass.get(FixedGuardNode.class);
+    public static final NodeClass<FixedGuardNode> TYPE = NodeClass.get(FixedGuardNode.class);
 
     public FixedGuardNode(LogicNode condition, DeoptimizationReason deoptReason, DeoptimizationAction action) {
         this(condition, deoptReason, action, false);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -28,9 +28,9 @@
 
 @NodeInfo
 public abstract class FixedNode extends ValueNode {
-    public static final NodeClass TYPE = NodeClass.get(FixedNode.class);
+    public static final NodeClass<FixedNode> TYPE = NodeClass.get(FixedNode.class);
 
-    protected FixedNode(NodeClass c, Stamp stamp) {
+    protected FixedNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FixedWithNextNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
  */
 @NodeInfo
 public abstract class FixedWithNextNode extends FixedNode {
-    public static final NodeClass TYPE = NodeClass.get(FixedWithNextNode.class);
+    public static final NodeClass<FixedWithNextNode> TYPE = NodeClass.get(FixedWithNextNode.class);
 
     @Successor protected FixedNode next;
 
@@ -45,7 +45,7 @@
         next = x;
     }
 
-    public FixedWithNextNode(NodeClass c, Stamp stamp) {
+    public FixedWithNextNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingAnchoredNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,15 +30,15 @@
 
 @NodeInfo
 public abstract class FloatingAnchoredNode extends FloatingNode {
-    public static final NodeClass TYPE = NodeClass.get(FloatingAnchoredNode.class);
+    public static final NodeClass<FloatingAnchoredNode> TYPE = NodeClass.get(FloatingAnchoredNode.class);
 
     @Input(InputType.Anchor) protected AnchoringNode anchor;
 
-    public FloatingAnchoredNode(NodeClass c, Stamp stamp) {
+    public FloatingAnchoredNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
-    public FloatingAnchoredNode(NodeClass c, Stamp stamp, AnchoringNode anchor) {
+    public FloatingAnchoredNode(NodeClass<?> c, Stamp stamp, AnchoringNode anchor) {
         super(c, stamp);
         this.anchor = anchor;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FloatingGuardedNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,15 +30,15 @@
 
 @NodeInfo
 public abstract class FloatingGuardedNode extends FloatingNode implements GuardedNode {
-    public static final NodeClass TYPE = NodeClass.get(FloatingGuardedNode.class);
+    public static final NodeClass<FloatingGuardedNode> TYPE = NodeClass.get(FloatingGuardedNode.class);
 
     @OptionalInput(InputType.Guard) protected GuardingNode guard;
 
-    protected FloatingGuardedNode(NodeClass c, Stamp stamp) {
+    protected FloatingGuardedNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
-    protected FloatingGuardedNode(NodeClass c, Stamp stamp, GuardingNode guard) {
+    protected FloatingGuardedNode(NodeClass<?> c, Stamp stamp, GuardingNode guard) {
         super(c, stamp);
         this.guard = guard;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
  */
 @NodeInfo(nameTemplate = "FrameState@{p#method/s}:{p#bci}")
 public final class FrameState extends VirtualState implements IterableNodeType {
-    public static final NodeClass TYPE = NodeClass.get(FrameState.class);
+    public static final NodeClass<FrameState> TYPE = NodeClass.get(FrameState.class);
 
     private static final DebugMetric METRIC_FRAMESTATE_COUNT = Debug.metric("FrameStateCount");
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FullInfopointNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
  */
 @NodeInfo
 public final class FullInfopointNode extends InfopointNode implements LIRLowerable, NodeWithState {
-    public static final NodeClass TYPE = NodeClass.get(FullInfopointNode.class);
+    public static final NodeClass<FullInfopointNode> TYPE = NodeClass.get(FullInfopointNode.class);
     @Input(InputType.State) FrameState state;
 
     public FullInfopointNode(InfopointReason reason, FrameState state) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -44,7 +44,7 @@
 @NodeInfo(nameTemplate = "Guard(!={p#negated}) {p#reason/s}", allowedUsageTypes = {InputType.Guard})
 public class GuardNode extends FloatingAnchoredNode implements Canonicalizable, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(GuardNode.class);
+    public static final NodeClass<GuardNode> TYPE = NodeClass.get(GuardNode.class);
     @Input(InputType.Condition) protected LogicNode condition;
     protected final DeoptimizationReason reason;
     protected JavaConstant speculation;
@@ -55,7 +55,7 @@
         this(TYPE, condition, anchor, reason, action, negated, speculation);
     }
 
-    protected GuardNode(NodeClass c, LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) {
+    protected GuardNode(NodeClass<?> c, LogicNode condition, AnchoringNode anchor, DeoptimizationReason reason, DeoptimizationAction action, boolean negated, JavaConstant speculation) {
         super(c, StampFactory.forVoid(), anchor);
         this.condition = condition;
         this.reason = reason;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardPhiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(nameTemplate = "GuardPhi({i#values})", allowedUsageTypes = {InputType.Guard})
 public final class GuardPhiNode extends PhiNode implements GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(GuardPhiNode.class);
+    public static final NodeClass<GuardPhiNode> TYPE = NodeClass.get(GuardPhiNode.class);
     @OptionalInput(InputType.Guard) NodeInputList<ValueNode> values;
 
     public GuardPhiNode(AbstractMergeNode merge) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardProxyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Guard})
 public final class GuardProxyNode extends ProxyNode implements GuardingNode, Proxy, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(GuardProxyNode.class);
+    public static final NodeClass<GuardProxyNode> TYPE = NodeClass.get(GuardProxyNode.class);
     @Input(InputType.Guard) GuardingNode value;
 
     public GuardProxyNode(GuardingNode value, AbstractBeginNode proxyPoint) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardedValueNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class GuardedValueNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(GuardedValueNode.class);
+    public static final NodeClass<GuardedValueNode> TYPE = NodeClass.get(GuardedValueNode.class);
     @Input ValueNode object;
     protected final Stamp piStamp;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/GuardingPiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo(nameTemplate = "GuardingPi(!={p#negated}) {p#reason/s}")
 public final class GuardingPiNode extends FixedWithNextNode implements Lowerable, Virtualizable, Canonicalizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(GuardingPiNode.class);
+    public static final NodeClass<GuardingPiNode> TYPE = NodeClass.get(GuardingPiNode.class);
     @Input ValueNode object;
     @Input(InputType.Condition) LogicNode condition;
     protected final DeoptimizationReason reason;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IfNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
  */
 @NodeInfo
 public final class IfNode extends ControlSplitNode implements Simplifiable, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IfNode.class);
+    public static final NodeClass<IfNode> TYPE = NodeClass.get(IfNode.class);
 
     private static final DebugMetric CORRECTED_PROBABILITIES = Debug.metric("CorrectedProbabilities");
 
@@ -235,7 +235,7 @@
             if (trueSucc instanceof BeginNode && falseSucc instanceof BeginNode && trueSucc.next() instanceof FixedWithNextNode && falseSucc.next() instanceof FixedWithNextNode) {
                 FixedWithNextNode trueNext = (FixedWithNextNode) trueSucc.next();
                 FixedWithNextNode falseNext = (FixedWithNextNode) falseSucc.next();
-                NodeClass nodeClass = trueNext.getNodeClass();
+                NodeClass<?> nodeClass = trueNext.getNodeClass();
                 if (trueNext.getClass() == falseNext.getClass()) {
                     if (nodeClass.getEdges(Inputs).areEqualIn(trueNext, falseNext) && trueNext.valueEquals(falseNext)) {
                         falseNext.replaceAtUsages(trueNext);
@@ -244,7 +244,7 @@
                         graph().addBeforeFixed(this, trueNext);
                         for (Node usage : trueNext.usages().snapshot()) {
                             if (usage.isAlive()) {
-                                NodeClass usageNodeClass = usage.getNodeClass();
+                                NodeClass<?> usageNodeClass = usage.getNodeClass();
                                 if (usageNodeClass.valueNumberable() && !usageNodeClass.isLeafNode()) {
                                     Node newNode = graph().findDuplicate(usage);
                                     if (newNode != null) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/IndirectCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,11 +32,11 @@
 
 @NodeInfo
 public abstract class IndirectCallTargetNode extends LoweredCallTargetNode {
-    public static final NodeClass TYPE = NodeClass.get(IndirectCallTargetNode.class);
+    public static final NodeClass<IndirectCallTargetNode> TYPE = NodeClass.get(IndirectCallTargetNode.class);
 
     @Input protected ValueNode computedAddress;
 
-    protected IndirectCallTargetNode(NodeClass c, ValueNode computedAddress, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target,
+    protected IndirectCallTargetNode(NodeClass<?> c, ValueNode computedAddress, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target,
                     CallingConvention.Type callType, InvokeKind invokeKind) {
         super(c, arguments, returnStamp, signature, target, callType, invokeKind);
         this.computedAddress = computedAddress;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InfopointNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,10 +29,10 @@
 
 @NodeInfo
 public abstract class InfopointNode extends FixedWithNextNode {
-    public static final NodeClass TYPE = NodeClass.get(InfopointNode.class);
+    public static final NodeClass<InfopointNode> TYPE = NodeClass.get(InfopointNode.class);
     protected final InfopointReason reason;
 
-    public InfopointNode(NodeClass c, InfopointReason reason) {
+    public InfopointNode(NodeClass<?> c, InfopointReason reason) {
         super(c, StampFactory.forVoid());
         this.reason = reason;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo(nameTemplate = "Invoke#{p#targetMethod/s}", allowedUsageTypes = {InputType.Memory})
 public final class InvokeNode extends AbstractMemoryCheckpoint implements Invoke, LIRLowerable, MemoryCheckpoint.Single {
-    public static final NodeClass TYPE = NodeClass.get(InvokeNode.class);
+    public static final NodeClass<InvokeNode> TYPE = NodeClass.get(InvokeNode.class);
 
     @Input(InputType.Extension) CallTargetNode callTarget;
     @OptionalInput(InputType.State) FrameState stateDuring;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(nameTemplate = "Invoke!#{p#targetMethod/s}", allowedUsageTypes = {InputType.Memory})
 public final class InvokeWithExceptionNode extends ControlSplitNode implements Invoke, MemoryCheckpoint.Single, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(InvokeWithExceptionNode.class);
+    public static final NodeClass<InvokeWithExceptionNode> TYPE = NodeClass.get(InvokeWithExceptionNode.class);
 
     private static final double EXCEPTION_PROBA = 1e-5;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/KillingBeginNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class KillingBeginNode extends AbstractBeginNode implements MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(KillingBeginNode.class);
+    public static final NodeClass<KillingBeginNode> TYPE = NodeClass.get(KillingBeginNode.class);
     protected LocationIdentity locationIdentity;
 
     public KillingBeginNode(LocationIdentity locationIdentity) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicConstantNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 @NodeInfo(nameTemplate = "{p#value}")
 public final class LogicConstantNode extends LogicNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LogicConstantNode.class);
+    public static final NodeClass<LogicConstantNode> TYPE = NodeClass.get(LogicConstantNode.class);
     protected final boolean value;
 
     public LogicConstantNode(boolean value) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNegationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 @NodeInfo
 public final class LogicNegationNode extends LogicNode implements Canonicalizable.Unary<LogicNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(LogicNegationNode.class);
+    public static final NodeClass<LogicNegationNode> TYPE = NodeClass.get(LogicNegationNode.class);
     @Input(InputType.Condition) LogicNode value;
 
     public LogicNegationNode(LogicNode value) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LogicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,9 +32,9 @@
 @NodeInfo(allowedUsageTypes = {Condition})
 public abstract class LogicNode extends FloatingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(LogicNode.class);
+    public static final NodeClass<LogicNode> TYPE = NodeClass.get(LogicNode.class);
 
-    public LogicNode(NodeClass c) {
+    public LogicNode(NodeClass<?> c) {
         super(c, StampFactory.forVoid());
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopBeginNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class LoopBeginNode extends AbstractMergeNode implements IterableNodeType, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoopBeginNode.class);
+    public static final NodeClass<LoopBeginNode> TYPE = NodeClass.get(LoopBeginNode.class);
     protected double loopFrequency;
     protected int nextEndIndex;
     protected int unswitches;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopEndNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class LoopEndNode extends AbstractEndNode {
 
-    public static final NodeClass TYPE = NodeClass.get(LoopEndNode.class);
+    public static final NodeClass<LoopEndNode> TYPE = NodeClass.get(LoopEndNode.class);
     @Input(InputType.Association) LoopBeginNode loopBegin;
     protected boolean canSafepoint;
     protected int endIndex;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoopExitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,7 +29,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public final class LoopExitNode extends BeginStateSplitNode implements IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(LoopExitNode.class);
+    public static final NodeClass<LoopExitNode> TYPE = NodeClass.get(LoopExitNode.class);
     @Input(InputType.Association) LoopBeginNode loopBegin;
 
     public LoopExitNode(LoopBeginNode loop) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/LoweredCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,12 +33,12 @@
 @NodeInfo
 public abstract class LoweredCallTargetNode extends CallTargetNode {
 
-    public static final NodeClass TYPE = NodeClass.get(LoweredCallTargetNode.class);
+    public static final NodeClass<LoweredCallTargetNode> TYPE = NodeClass.get(LoweredCallTargetNode.class);
     protected final Stamp returnStamp;
     protected final JavaType[] signature;
     protected final CallingConvention.Type callType;
 
-    protected LoweredCallTargetNode(NodeClass c, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
+    protected LoweredCallTargetNode(NodeClass<?> c, List<ValueNode> arguments, Stamp returnStamp, JavaType[] signature, ResolvedJavaMethod target, CallingConvention.Type callType, InvokeKind invokeKind) {
         super(c, arguments, target, invokeKind);
         this.returnStamp = returnStamp;
         this.signature = signature;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryMapNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Extension})
 public final class MemoryMapNode extends FloatingNode implements MemoryMap, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(MemoryMapNode.class);
+    public static final NodeClass<MemoryMapNode> TYPE = NodeClass.get(MemoryMapNode.class);
     protected final List<LocationIdentity> locationIdentities;
     @Input(InputType.Memory) NodeInputList<ValueNode> nodes;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MemoryPhiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo(nameTemplate = "MemoryPhi({i#values}) {p#locationIdentity/s}", allowedUsageTypes = {InputType.Memory})
 public final class MemoryPhiNode extends PhiNode implements MemoryNode {
 
-    public static final NodeClass TYPE = NodeClass.get(MemoryPhiNode.class);
+    public static final NodeClass<MemoryPhiNode> TYPE = NodeClass.get(MemoryPhiNode.class);
     @Input(InputType.Memory) NodeInputList<ValueNode> values;
     protected final LocationIdentity locationIdentity;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/MergeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class MergeNode extends AbstractMergeNode {
 
-    public static final NodeClass TYPE = NodeClass.get(MergeNode.class);
+    public static final NodeClass<MergeNode> TYPE = NodeClass.get(MergeNode.class);
 
     public MergeNode() {
         super(TYPE);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ParameterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo(nameTemplate = "Param({p#index})")
 public final class ParameterNode extends AbstractLocalNode implements IterableNodeType, UncheckedInterfaceProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(ParameterNode.class);
+    public static final NodeClass<ParameterNode> TYPE = NodeClass.get(ParameterNode.class);
 
     public ParameterNode(int index, Stamp stamp) {
         super(TYPE, index, stamp);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PhiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,10 +41,10 @@
 @NodeInfo
 public abstract class PhiNode extends FloatingNode implements Simplifiable {
 
-    public static final NodeClass TYPE = NodeClass.get(PhiNode.class);
+    public static final NodeClass<PhiNode> TYPE = NodeClass.get(PhiNode.class);
     @Input(InputType.Association) protected AbstractMergeNode merge;
 
-    protected PhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge) {
+    protected PhiNode(NodeClass<?> c, Stamp stamp, AbstractMergeNode merge) {
         super(c, stamp);
         this.merge = merge;
     }
@@ -145,7 +145,7 @@
     @NodeInfo
     static final class MultipleValuesNode extends ValueNode {
 
-        public static final NodeClass TYPE = NodeClass.get(MultipleValuesNode.class);
+        public static final NodeClass<MultipleValuesNode> TYPE = NodeClass.get(MultipleValuesNode.class);
 
         public MultipleValuesNode() {
             super(TYPE, null);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class PiArrayNode extends PiNode implements ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(PiArrayNode.class);
+    public static final NodeClass<PiArrayNode> TYPE = NodeClass.get(PiArrayNode.class);
     @Input ValueNode length;
 
     public ValueNode length() {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/PiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -44,7 +44,7 @@
 @NodeInfo
 public class PiNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, IterableNodeType, Canonicalizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(PiNode.class);
+    public static final NodeClass<PiNode> TYPE = NodeClass.get(PiNode.class);
     @Input ValueNode object;
     protected final Stamp piStamp;
 
@@ -52,7 +52,7 @@
         return object;
     }
 
-    protected PiNode(NodeClass c, ValueNode object, Stamp stamp) {
+    protected PiNode(NodeClass<?> c, ValueNode object, Stamp stamp) {
         super(c, stamp, null);
         this.object = object;
         this.piStamp = stamp;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ProxyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,10 +36,10 @@
 @NodeInfo
 public abstract class ProxyNode extends FloatingNode implements IterableNodeType, ValueNumberable {
 
-    public static final NodeClass TYPE = NodeClass.get(ProxyNode.class);
+    public static final NodeClass<ProxyNode> TYPE = NodeClass.get(ProxyNode.class);
     @Input(InputType.Association) AbstractBeginNode proxyPoint;
 
-    protected ProxyNode(NodeClass c, Stamp stamp, AbstractBeginNode proxyPoint) {
+    protected ProxyNode(NodeClass<?> c, Stamp stamp, AbstractBeginNode proxyPoint) {
         super(c, stamp);
         assert proxyPoint != null;
         this.proxyPoint = proxyPoint;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ReturnNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public final class ReturnNode extends ControlSinkNode implements LIRLowerable, IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(ReturnNode.class);
+    public static final NodeClass<ReturnNode> TYPE = NodeClass.get(ReturnNode.class);
     @OptionalInput ValueNode result;
     @OptionalInput(InputType.Extension) MemoryMapNode memoryMap;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SafepointNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class SafepointNode extends DeoptimizingFixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(SafepointNode.class);
+    public static final NodeClass<SafepointNode> TYPE = NodeClass.get(SafepointNode.class);
 
     public SafepointNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ShortCircuitOrNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,7 +29,7 @@
 @NodeInfo
 public final class ShortCircuitOrNode extends LogicNode implements IterableNodeType, Canonicalizable.Binary<LogicNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(ShortCircuitOrNode.class);
+    public static final NodeClass<ShortCircuitOrNode> TYPE = NodeClass.get(ShortCircuitOrNode.class);
     @Input(InputType.Condition) LogicNode x;
     @Input(InputType.Condition) LogicNode y;
     protected boolean xNegated;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/SimpleInfopointNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public final class SimpleInfopointNode extends InfopointNode implements LIRLowerable, IterableNodeType, Simplifiable {
-    public static final NodeClass TYPE = NodeClass.get(SimpleInfopointNode.class);
+    public static final NodeClass<SimpleInfopointNode> TYPE = NodeClass.get(SimpleInfopointNode.class);
     protected BytecodePosition position;
 
     public SimpleInfopointNode(InfopointReason reason, BytecodePosition position) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StartNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,9 +32,9 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public class StartNode extends BeginStateSplitNode implements MemoryCheckpoint.Single {
-    public static final NodeClass TYPE = NodeClass.get(StartNode.class);
+    public static final NodeClass<StartNode> TYPE = NodeClass.get(StartNode.class);
 
-    protected StartNode(NodeClass c) {
+    protected StartNode(NodeClass<?> c) {
         super(c);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/StructuredGraph.java	Mon Feb 16 17:47:43 2015 +0100
@@ -151,7 +151,7 @@
 
     public Stamp getReturnStamp() {
         Stamp returnStamp = null;
-        for (ReturnNode returnNode : getNodes(ReturnNode.class)) {
+        for (ReturnNode returnNode : getNodes(ReturnNode.TYPE)) {
             ValueNode result = returnNode.result();
             if (result != null) {
                 if (returnStamp == null) {
@@ -246,7 +246,7 @@
     }
 
     public ParameterNode getParameter(int index) {
-        for (ParameterNode param : getNodes(ParameterNode.class)) {
+        for (ParameterNode param : getNodes(ParameterNode.TYPE)) {
             if (param.index() == index) {
                 return param;
             }
@@ -255,7 +255,7 @@
     }
 
     public Iterable<Invoke> getInvokes() {
-        final Iterator<MethodCallTargetNode> callTargets = getNodes(MethodCallTargetNode.class).iterator();
+        final Iterator<MethodCallTargetNode> callTargets = getNodes(MethodCallTargetNode.TYPE).iterator();
         return new Iterable<Invoke>() {
 
             private Invoke next;
@@ -299,7 +299,7 @@
     }
 
     public boolean hasLoops() {
-        return hasNode(LoopBeginNode.class);
+        return hasNode(LoopBeginNode.TYPE);
     }
 
     public void removeFloating(FloatingNode node) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/TypeProfileProxyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class TypeProfileProxyNode extends UnaryNode implements IterableNodeType, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(TypeProfileProxyNode.class);
+    public static final NodeClass<TypeProfileProxyNode> TYPE = NodeClass.get(TypeProfileProxyNode.class);
     protected final JavaTypeProfile profile;
     protected transient ResolvedJavaType lastCheckedType;
     protected transient JavaTypeProfile lastCheckedProfile;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnaryOpLogicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,14 +30,14 @@
 @NodeInfo
 public abstract class UnaryOpLogicNode extends LogicNode implements LIRLowerable, Canonicalizable.Unary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(UnaryOpLogicNode.class);
+    public static final NodeClass<UnaryOpLogicNode> TYPE = NodeClass.get(UnaryOpLogicNode.class);
     @Input protected ValueNode value;
 
     public ValueNode getValue() {
         return value;
     }
 
-    public UnaryOpLogicNode(NodeClass c, ValueNode value) {
+    public UnaryOpLogicNode(NodeClass<?> c, ValueNode value) {
         super(c);
         assert value != null;
         this.value = value;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/UnwindNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public final class UnwindNode extends ControlSinkNode implements Lowerable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnwindNode.class);
+    public static final NodeClass<UnwindNode> TYPE = NodeClass.get(UnwindNode.class);
     @Input ValueNode exception;
 
     public ValueNode exception() {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,14 +35,14 @@
 @NodeInfo
 public abstract class ValueNode extends com.oracle.graal.graph.Node implements KindProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(ValueNode.class);
+    public static final NodeClass<ValueNode> TYPE = NodeClass.get(ValueNode.class);
     /**
      * The kind of this value. This is {@link Kind#Void} for instructions that produce no value.
      * This kind is guaranteed to be a {@linkplain Kind#getStackKind() stack kind}.
      */
     protected Stamp stamp;
 
-    public ValueNode(NodeClass c, Stamp stamp) {
+    public ValueNode(NodeClass<?> c, Stamp stamp) {
         super(c);
         this.stamp = stamp;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValuePhiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,14 +33,14 @@
 @NodeInfo(nameTemplate = "ValuePhi({i#values})")
 public class ValuePhiNode extends PhiNode {
 
-    public static final NodeClass TYPE = NodeClass.get(ValuePhiNode.class);
+    public static final NodeClass<ValuePhiNode> TYPE = NodeClass.get(ValuePhiNode.class);
     @Input protected NodeInputList<ValueNode> values;
 
     public ValuePhiNode(Stamp stamp, AbstractMergeNode merge) {
         this(TYPE, stamp, merge);
     }
 
-    protected ValuePhiNode(NodeClass c, Stamp stamp, AbstractMergeNode merge) {
+    protected ValuePhiNode(NodeClass<?> c, Stamp stamp, AbstractMergeNode merge) {
         super(c, stamp, merge);
         assert stamp != StampFactory.forVoid();
         values = new NodeInputList<>(this);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ValueProxyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public final class ValueProxyNode extends ProxyNode implements Canonicalizable, Virtualizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(ValueProxyNode.class);
+    public static final NodeClass<ValueProxyNode> TYPE = NodeClass.get(ValueProxyNode.class);
     @Input ValueNode value;
 
     public ValueProxyNode(ValueNode value, AbstractBeginNode proxyPoint) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/VirtualState.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,11 +32,11 @@
 @NodeInfo(allowedUsageTypes = {InputType.State})
 public abstract class VirtualState extends Node {
 
-    protected VirtualState(NodeClass c) {
+    protected VirtualState(NodeClass<?> c) {
         super(c);
     }
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualState.class);
+    public static final NodeClass<VirtualState> TYPE = NodeClass.get(VirtualState.class);
 
     public abstract static class NodeClosure<T extends Node> {
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AbsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo
 public final class AbsNode extends UnaryArithmeticNode<Abs> implements ArithmeticLIRLowerable, NarrowableArithmeticNode {
-    public static final NodeClass TYPE = NodeClass.get(AbsNode.class);
+    public static final NodeClass<AbsNode> TYPE = NodeClass.get(AbsNode.class);
 
     public AbsNode(ValueNode x) {
         super(TYPE, ArithmeticOpTable::getAbs, x);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AddNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,13 +36,13 @@
 @NodeInfo(shortName = "+")
 public class AddNode extends BinaryArithmeticNode<Add> implements NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AddNode.class);
+    public static final NodeClass<AddNode> TYPE = NodeClass.get(AddNode.class);
 
     public AddNode(ValueNode x, ValueNode y) {
         this(TYPE, x, y);
     }
 
-    protected AddNode(NodeClass c, ValueNode x, ValueNode y) {
+    protected AddNode(NodeClass<?> c, ValueNode x, ValueNode y) {
         super(c, ArithmeticOpTable::getAdd, x, y);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/AndNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(shortName = "&")
 public final class AndNode extends BinaryArithmeticNode<And> implements NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AndNode.class);
+    public static final NodeClass<AndNode> TYPE = NodeClass.get(AndNode.class);
 
     public AndNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getAnd, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryArithmeticNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,14 +39,14 @@
 @NodeInfo
 public abstract class BinaryArithmeticNode<OP> extends BinaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BinaryArithmeticNode.class);
+    @SuppressWarnings("rawtypes") public static final NodeClass<BinaryArithmeticNode> TYPE = NodeClass.get(BinaryArithmeticNode.class);
 
     protected interface SerializableBinaryFunction<T> extends Function<ArithmeticOpTable, BinaryOp<T>>, Serializable {
     }
 
     protected final SerializableBinaryFunction<OP> getOp;
 
-    protected BinaryArithmeticNode(NodeClass c, SerializableBinaryFunction<OP> getOp, ValueNode x, ValueNode y) {
+    protected BinaryArithmeticNode(NodeClass<?> c, SerializableBinaryFunction<OP> getOp, ValueNode x, ValueNode y) {
         super(c, getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), y.stamp()), x, y);
         this.getOp = getOp;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/BinaryNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public abstract class BinaryNode extends FloatingNode implements Canonicalizable.Binary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(BinaryNode.class);
+    public static final NodeClass<BinaryNode> TYPE = NodeClass.get(BinaryNode.class);
     @Input protected ValueNode x;
     @Input protected ValueNode y;
 
@@ -63,7 +63,7 @@
      * @param x the first input instruction
      * @param y the second input instruction
      */
-    protected BinaryNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y) {
+    protected BinaryNode(NodeClass<?> c, Stamp stamp, ValueNode x, ValueNode y) {
         super(c, stamp);
         this.x = x;
         this.y = y;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public abstract class CompareNode extends BinaryOpLogicNode {
 
-    public static final NodeClass TYPE = NodeClass.get(CompareNode.class);
+    public static final NodeClass<CompareNode> TYPE = NodeClass.get(CompareNode.class);
     protected final Condition condition;
     protected final boolean unorderedIsTrue;
 
@@ -50,7 +50,7 @@
      * @param x the instruction producing the first input to the instruction
      * @param y the instruction that produces the second input to this instruction
      */
-    protected CompareNode(NodeClass c, Condition condition, boolean unorderedIsTrue, ValueNode x, ValueNode y) {
+    protected CompareNode(NodeClass<?> c, Condition condition, boolean unorderedIsTrue, ValueNode x, ValueNode y) {
         super(c, x, y);
         this.condition = condition;
         this.unorderedIsTrue = unorderedIsTrue;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ConditionalNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class ConditionalNode extends FloatingNode implements Canonicalizable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ConditionalNode.class);
+    public static final NodeClass<ConditionalNode> TYPE = NodeClass.get(ConditionalNode.class);
     @Input(InputType.Condition) LogicNode condition;
     @Input ValueNode trueValue;
     @Input ValueNode falseValue;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/DivNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo(shortName = "/")
 public final class DivNode extends BinaryArithmeticNode<Div> {
 
-    public static final NodeClass TYPE = NodeClass.get(DivNode.class);
+    public static final NodeClass<DivNode> TYPE = NodeClass.get(DivNode.class);
 
     public DivNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getDiv, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FixedBinaryNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,12 +30,12 @@
 
 @NodeInfo
 public abstract class FixedBinaryNode extends DeoptimizingFixedWithNextNode implements Canonicalizable.Binary<ValueNode> {
-    public static final NodeClass TYPE = NodeClass.get(FixedBinaryNode.class);
+    public static final NodeClass<FixedBinaryNode> TYPE = NodeClass.get(FixedBinaryNode.class);
 
     @Input protected ValueNode x;
     @Input protected ValueNode y;
 
-    public FixedBinaryNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y) {
+    public FixedBinaryNode(NodeClass<?> c, Stamp stamp, ValueNode x, ValueNode y) {
         super(c, stamp);
         this.x = x;
         this.y = y;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatConvertNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public final class FloatConvertNode extends UnaryArithmeticNode<FloatConvertOp> implements ConvertNode, Lowerable, ArithmeticLIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(FloatConvertNode.class);
+    public static final NodeClass<FloatConvertNode> TYPE = NodeClass.get(FloatConvertNode.class);
 
     protected final FloatConvert op;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(shortName = "==")
 public final class FloatEqualsNode extends CompareNode {
-    public static final NodeClass TYPE = NodeClass.get(FloatEqualsNode.class);
+    public static final NodeClass<FloatEqualsNode> TYPE = NodeClass.get(FloatEqualsNode.class);
 
     public FloatEqualsNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.EQ, false, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(shortName = "<")
 public final class FloatLessThanNode extends CompareNode {
-    public static final NodeClass TYPE = NodeClass.get(FloatLessThanNode.class);
+    public static final NodeClass<FloatLessThanNode> TYPE = NodeClass.get(FloatLessThanNode.class);
 
     public FloatLessThanNode(ValueNode x, ValueNode y, boolean unorderedIsTrue) {
         super(TYPE, Condition.LT, unorderedIsTrue, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatingNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,9 +29,9 @@
 
 @NodeInfo
 public abstract class FloatingNode extends ValueNode implements Node.ValueNumberable {
-    public static final NodeClass TYPE = NodeClass.get(FloatingNode.class);
+    public static final NodeClass<FloatingNode> TYPE = NodeClass.get(FloatingNode.class);
 
-    public FloatingNode(NodeClass c, Stamp stamp) {
+    public FloatingNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 
 @NodeInfo(shortName = "|<|")
 public final class IntegerBelowNode extends CompareNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerBelowNode.class);
+    public static final NodeClass<IntegerBelowNode> TYPE = NodeClass.get(IntegerBelowNode.class);
 
     public IntegerBelowNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.BT, false, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public abstract class IntegerConvertNode<OP, REV> extends UnaryNode implements ConvertNode, ArithmeticLIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerConvertNode.class);
+    @SuppressWarnings("rawtypes") public static final NodeClass<IntegerConvertNode> TYPE = NodeClass.get(IntegerConvertNode.class);
 
     protected final SerializableIntegerConvertFunction<OP> getOp;
     protected final SerializableIntegerConvertFunction<REV> getReverseOp;
@@ -50,7 +50,7 @@
     protected interface SerializableIntegerConvertFunction<T> extends Function<ArithmeticOpTable, IntegerConvertOp<T>>, Serializable {
     }
 
-    protected IntegerConvertNode(NodeClass c, SerializableIntegerConvertFunction<OP> getOp, SerializableIntegerConvertFunction<REV> getReverseOp, int inputBits, int resultBits, ValueNode input) {
+    protected IntegerConvertNode(NodeClass<?> c, SerializableIntegerConvertFunction<OP> getOp, SerializableIntegerConvertFunction<REV> getReverseOp, int inputBits, int resultBits, ValueNode input) {
         super(c, getOp.apply(ArithmeticOpTable.forStamp(input.stamp())).foldStamp(inputBits, resultBits, input.stamp()), input);
         this.getOp = getOp;
         this.getReverseOp = getReverseOp;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(shortName = "/")
 public final class IntegerDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerDivNode.class);
+    public static final NodeClass<IntegerDivNode> TYPE = NodeClass.get(IntegerDivNode.class);
 
     public IntegerDivNode(ValueNode x, ValueNode y) {
         super(TYPE, IntegerStamp.OPS.getDiv().foldStamp(x.stamp(), y.stamp()), x, y);
@@ -95,7 +95,7 @@
         }
 
         if (next() instanceof IntegerDivNode) {
-            NodeClass nodeClass = getNodeClass();
+            NodeClass<?> nodeClass = getNodeClass();
             if (next().getClass() == this.getClass() && nodeClass.getEdges(Inputs).areEqualIn(this, next()) && valueEquals(next())) {
                 return next();
             }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(shortName = "==")
 public final class IntegerEqualsNode extends CompareNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerEqualsNode.class);
+    public static final NodeClass<IntegerEqualsNode> TYPE = NodeClass.get(IntegerEqualsNode.class);
 
     public IntegerEqualsNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.EQ, false, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
 @NodeInfo(shortName = "<")
 public final class IntegerLessThanNode extends CompareNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerLessThanNode.class);
+    public static final NodeClass<IntegerLessThanNode> TYPE = NodeClass.get(IntegerLessThanNode.class);
 
     public IntegerLessThanNode(ValueNode x, ValueNode y) {
         super(TYPE, Condition.LT, false, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerRemNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,7 +32,7 @@
 
 @NodeInfo(shortName = "%")
 public final class IntegerRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerRemNode.class);
+    public static final NodeClass<IntegerRemNode> TYPE = NodeClass.get(IntegerRemNode.class);
 
     public IntegerRemNode(ValueNode x, ValueNode y) {
         super(TYPE, IntegerStamp.OPS.getRem().foldStamp(x.stamp(), y.stamp()), x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerTestNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
  */
 @NodeInfo
 public final class IntegerTestNode extends BinaryOpLogicNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerTestNode.class);
+    public static final NodeClass<IntegerTestNode> TYPE = NodeClass.get(IntegerTestNode.class);
 
     public IntegerTestNode(ValueNode x, ValueNode y) {
         super(TYPE, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class IsNullNode extends UnaryOpLogicNode implements LIRLowerable, Virtualizable, PiPushable {
 
-    public static final NodeClass TYPE = NodeClass.get(IsNullNode.class);
+    public static final NodeClass<IsNullNode> TYPE = NodeClass.get(IsNullNode.class);
 
     public IsNullNode(ValueNode object) {
         super(TYPE, object);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/LeftShiftNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo(shortName = "<<")
 public final class LeftShiftNode extends ShiftNode<Shl> {
 
-    public static final NodeClass TYPE = NodeClass.get(LeftShiftNode.class);
+    public static final NodeClass<LeftShiftNode> TYPE = NodeClass.get(LeftShiftNode.class);
 
     public LeftShiftNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getShl, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/MulNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,13 +37,13 @@
 @NodeInfo(shortName = "*")
 public class MulNode extends BinaryArithmeticNode<Mul> implements NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(MulNode.class);
+    public static final NodeClass<MulNode> TYPE = NodeClass.get(MulNode.class);
 
     public MulNode(ValueNode x, ValueNode y) {
         this(TYPE, x, y);
     }
 
-    protected MulNode(NodeClass c, ValueNode x, ValueNode y) {
+    protected MulNode(NodeClass<?> c, ValueNode x, ValueNode y) {
         super(c, ArithmeticOpTable::getMul, x, y);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class NarrowNode extends IntegerConvertNode<Narrow, SignExtend> {
 
-    public static final NodeClass TYPE = NodeClass.get(NarrowNode.class);
+    public static final NodeClass<NarrowNode> TYPE = NodeClass.get(NarrowNode.class);
 
     public NarrowNode(ValueNode input, int resultBits) {
         this(input, PrimitiveStamp.getBits(input.stamp()), resultBits);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NegateNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class NegateNode extends UnaryArithmeticNode<Neg> implements NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(NegateNode.class);
+    public static final NodeClass<NegateNode> TYPE = NodeClass.get(NegateNode.class);
 
     public NegateNode(ValueNode value) {
         super(TYPE, ArithmeticOpTable::getNeg, value);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class NormalizeCompareNode extends BinaryNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(NormalizeCompareNode.class);
+    public static final NodeClass<NormalizeCompareNode> TYPE = NodeClass.get(NormalizeCompareNode.class);
     protected final boolean isUnorderedLess;
 
     public NormalizeCompareNode(ValueNode x, ValueNode y, boolean isUnorderedLess) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NotNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class NotNode extends UnaryArithmeticNode<Not> implements ArithmeticLIRLowerable, NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(NotNode.class);
+    public static final NodeClass<NotNode> TYPE = NodeClass.get(NotNode.class);
 
     public NotNode(ValueNode x) {
         super(TYPE, ArithmeticOpTable::getNot, x);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ObjectEqualsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo(shortName = "==")
 public final class ObjectEqualsNode extends PointerEqualsNode implements Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ObjectEqualsNode.class);
+    public static final NodeClass<ObjectEqualsNode> TYPE = NodeClass.get(ObjectEqualsNode.class);
 
     public ObjectEqualsNode(ValueNode x, ValueNode y) {
         super(TYPE, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/OrNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(shortName = "|")
 public final class OrNode extends BinaryArithmeticNode<Or> {
 
-    public static final NodeClass TYPE = NodeClass.get(OrNode.class);
+    public static final NodeClass<OrNode> TYPE = NodeClass.get(OrNode.class);
 
     public OrNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getOr, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/PointerEqualsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,13 +33,13 @@
 @NodeInfo(shortName = "==")
 public class PointerEqualsNode extends CompareNode {
 
-    public static final NodeClass TYPE = NodeClass.get(PointerEqualsNode.class);
+    public static final NodeClass<PointerEqualsNode> TYPE = NodeClass.get(PointerEqualsNode.class);
 
     public PointerEqualsNode(ValueNode x, ValueNode y) {
         this(TYPE, x, y);
     }
 
-    protected PointerEqualsNode(NodeClass c, ValueNode x, ValueNode y) {
+    protected PointerEqualsNode(NodeClass<?> c, ValueNode x, ValueNode y) {
         super(c, Condition.EQ, false, x, y);
         assert x.stamp() instanceof AbstractPointerStamp;
         assert y.stamp() instanceof AbstractPointerStamp;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ReinterpretNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class ReinterpretNode extends UnaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ReinterpretNode.class);
+    public static final NodeClass<ReinterpretNode> TYPE = NodeClass.get(ReinterpretNode.class);
 
     public ReinterpretNode(Kind to, ValueNode value) {
         this(StampFactory.forKind(to), value);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RemNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(shortName = "%")
 public final class RemNode extends BinaryArithmeticNode<Rem> implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(RemNode.class);
+    public static final NodeClass<RemNode> TYPE = NodeClass.get(RemNode.class);
 
     public RemNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getRem, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/RightShiftNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo(shortName = ">>")
 public final class RightShiftNode extends ShiftNode<Shr> {
 
-    public static final NodeClass TYPE = NodeClass.get(RightShiftNode.class);
+    public static final NodeClass<RightShiftNode> TYPE = NodeClass.get(RightShiftNode.class);
 
     public RightShiftNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getShr, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ShiftNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public abstract class ShiftNode<OP> extends BinaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ShiftNode.class);
+    @SuppressWarnings("rawtypes") public static final NodeClass<ShiftNode> TYPE = NodeClass.get(ShiftNode.class);
 
     protected interface SerializableShiftFunction<T> extends Function<ArithmeticOpTable, ShiftOp<T>>, Serializable {
     }
@@ -53,7 +53,7 @@
      * @param x the first input value
      * @param s the second input value
      */
-    protected ShiftNode(NodeClass c, SerializableShiftFunction<OP> getOp, ValueNode x, ValueNode s) {
+    protected ShiftNode(NodeClass<?> c, SerializableShiftFunction<OP> getOp, ValueNode x, ValueNode s) {
         super(c, getOp.apply(ArithmeticOpTable.forStamp(x.stamp())).foldStamp(x.stamp(), (IntegerStamp) s.stamp()), x, s);
         assert ((IntegerStamp) s.stamp()).getBits() == 32;
         this.getOp = getOp;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class SignExtendNode extends IntegerConvertNode<SignExtend, Narrow> {
 
-    public static final NodeClass TYPE = NodeClass.get(SignExtendNode.class);
+    public static final NodeClass<SignExtendNode> TYPE = NodeClass.get(SignExtendNode.class);
 
     public SignExtendNode(ValueNode input, int resultBits) {
         this(input, PrimitiveStamp.getBits(input.stamp()), resultBits);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SqrtNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class SqrtNode extends UnaryArithmeticNode<Sqrt> implements ArithmeticLIRLowerable, NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(SqrtNode.class);
+    public static final NodeClass<SqrtNode> TYPE = NodeClass.get(SqrtNode.class);
 
     public SqrtNode(ValueNode x) {
         super(TYPE, ArithmeticOpTable::getSqrt, x);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SubNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,13 +37,13 @@
 @NodeInfo(shortName = "-")
 public class SubNode extends BinaryArithmeticNode<Sub> implements NarrowableArithmeticNode {
 
-    public static final NodeClass TYPE = NodeClass.get(SubNode.class);
+    public static final NodeClass<SubNode> TYPE = NodeClass.get(SubNode.class);
 
     public SubNode(ValueNode x, ValueNode y) {
         this(TYPE, x, y);
     }
 
-    protected SubNode(NodeClass c, ValueNode x, ValueNode y) {
+    protected SubNode(NodeClass<?> c, ValueNode x, ValueNode y) {
         super(c, ArithmeticOpTable::getSub, x, y);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryArithmeticNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,14 +36,14 @@
 @NodeInfo
 public abstract class UnaryArithmeticNode<OP> extends UnaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnaryArithmeticNode.class);
+    @SuppressWarnings("rawtypes") public static final NodeClass<UnaryArithmeticNode> TYPE = NodeClass.get(UnaryArithmeticNode.class);
 
     protected interface SerializableUnaryFunction<T> extends Function<ArithmeticOpTable, UnaryOp<T>>, Serializable {
     }
 
     protected final SerializableUnaryFunction<OP> getOp;
 
-    protected UnaryArithmeticNode(NodeClass c, SerializableUnaryFunction<OP> getOp, ValueNode value) {
+    protected UnaryArithmeticNode(NodeClass<?> c, SerializableUnaryFunction<OP> getOp, ValueNode value) {
         super(c, getOp.apply(ArithmeticOpTable.forStamp(value.stamp())).foldStamp(value.stamp()), value);
         this.getOp = getOp;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnaryNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public abstract class UnaryNode extends FloatingNode implements Canonicalizable.Unary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(UnaryNode.class);
+    public static final NodeClass<UnaryNode> TYPE = NodeClass.get(UnaryNode.class);
     @Input protected ValueNode value;
 
     public ValueNode getValue() {
@@ -48,7 +48,7 @@
      * @param stamp the result type of this instruction
      * @param value the input instruction
      */
-    protected UnaryNode(NodeClass c, Stamp stamp, ValueNode value) {
+    protected UnaryNode(NodeClass<?> c, Stamp stamp, ValueNode value) {
         super(c, stamp);
         this.value = value;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedDivNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(shortName = "|/|")
 public final class UnsignedDivNode extends FixedBinaryNode implements Lowerable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsignedDivNode.class);
+    public static final NodeClass<UnsignedDivNode> TYPE = NodeClass.get(UnsignedDivNode.class);
 
     public UnsignedDivNode(ValueNode x, ValueNode y) {
         super(TYPE, x.stamp().unrestricted(), x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRemNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(shortName = "|%|")
 public final class UnsignedRemNode extends FixedBinaryNode implements Lowerable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsignedRemNode.class);
+    public static final NodeClass<UnsignedRemNode> TYPE = NodeClass.get(UnsignedRemNode.class);
 
     public UnsignedRemNode(ValueNode x, ValueNode y) {
         super(TYPE, x.stamp().unrestricted(), x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/UnsignedRightShiftNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo(shortName = ">>>")
 public final class UnsignedRightShiftNode extends ShiftNode<UShr> {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsignedRightShiftNode.class);
+    public static final NodeClass<UnsignedRightShiftNode> TYPE = NodeClass.get(UnsignedRightShiftNode.class);
 
     public UnsignedRightShiftNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getUShr, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/XorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(shortName = "^")
 public final class XorNode extends BinaryArithmeticNode<Xor> {
 
-    public static final NodeClass TYPE = NodeClass.get(XorNode.class);
+    public static final NodeClass<XorNode> TYPE = NodeClass.get(XorNode.class);
 
     public XorNode(ValueNode x, ValueNode y) {
         super(TYPE, ArithmeticOpTable::getXor, x, y);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public final class ZeroExtendNode extends IntegerConvertNode<ZeroExtend, Narrow> {
 
-    public static final NodeClass TYPE = NodeClass.get(ZeroExtendNode.class);
+    public static final NodeClass<ZeroExtendNode> TYPE = NodeClass.get(ZeroExtendNode.class);
 
     public ZeroExtendNode(ValueNode input, int resultBits) {
         this(input, PrimitiveStamp.getBits(input.stamp()), resultBits);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/cfg/ControlFlowGraph.java	Mon Feb 16 17:47:43 2015 +0100
@@ -156,7 +156,7 @@
     private void identifyBlocks() {
         // Find all block headers
         int numBlocks = 0;
-        for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.class)) {
+        for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.TYPE)) {
             Block block = new Block(begin);
             numBlocks++;
             identifyBlock(block);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/BlackholeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class BlackholeNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BlackholeNode.class);
+    public static final NodeClass<BlackholeNode> TYPE = NodeClass.get(BlackholeNode.class);
     @Input ValueNode value;
 
     public BlackholeNode(ValueNode value) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/ControlFlowAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class ControlFlowAnchorNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ControlFlowAnchorNode.class);
+    public static final NodeClass<ControlFlowAnchorNode> TYPE = NodeClass.get(ControlFlowAnchorNode.class);
 
     private static class Unique {
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/DynamicCounterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public class DynamicCounterNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DynamicCounterNode.class);
+    public static final NodeClass<DynamicCounterNode> TYPE = NodeClass.get(DynamicCounterNode.class);
     @Input ValueNode increment;
 
     protected final String name;
@@ -50,7 +50,7 @@
         this(TYPE, name, group, increment, withContext);
     }
 
-    protected DynamicCounterNode(NodeClass c, String name, String group, ValueNode increment, boolean withContext) {
+    protected DynamicCounterNode(NodeClass<?> c, String name, String group, ValueNode increment, boolean withContext) {
         super(c, StampFactory.forVoid());
         this.name = name;
         this.group = group;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/OpaqueNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class OpaqueNode extends FloatingNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(OpaqueNode.class);
+    public static final NodeClass<OpaqueNode> TYPE = NodeClass.get(OpaqueNode.class);
     @Input ValueNode value;
 
     public OpaqueNode(ValueNode value) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/VerifyHeapNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class VerifyHeapNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(VerifyHeapNode.class);
+    public static final NodeClass<VerifyHeapNode> TYPE = NodeClass.get(VerifyHeapNode.class);
 
     public VerifyHeapNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/debug/WeakCounterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class WeakCounterNode extends DynamicCounterNode implements Simplifiable, Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(WeakCounterNode.class);
+    public static final NodeClass<WeakCounterNode> TYPE = NodeClass.get(WeakCounterNode.class);
     @Input ValueNode checkedValue;
 
     public WeakCounterNode(String group, String name, ValueNode increment, boolean addContext, ValueNode checkedValue) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AbstractWriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public abstract class AbstractWriteNode extends FixedAccessNode implements StateSplit, MemoryCheckpoint.Single, MemoryAccess, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractWriteNode.class);
+    public static final NodeClass<AbstractWriteNode> TYPE = NodeClass.get(AbstractWriteNode.class);
     @Input ValueNode value;
     @OptionalInput(InputType.State) FrameState stateAfter;
     @OptionalInput(InputType.Memory) Node lastLocationAccess;
@@ -65,17 +65,17 @@
         return initialization;
     }
 
-    protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) {
+    protected AbstractWriteNode(NodeClass<?> c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) {
         this(c, object, value, location, barrierType, false);
     }
 
-    protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) {
+    protected AbstractWriteNode(NodeClass<?> c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, boolean initialization) {
         super(c, object, location, StampFactory.forVoid(), barrierType);
         this.value = value;
         this.initialization = initialization;
     }
 
-    protected AbstractWriteNode(NodeClass c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) {
+    protected AbstractWriteNode(NodeClass<?> c, ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType, GuardingNode guard, boolean initialization) {
         super(c, object, location, StampFactory.forVoid(), guard, barrierType, false, null);
         this.value = value;
         this.initialization = initialization;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/AddLocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo(nameTemplate = "AddLoc {p#locationIdentity/s}")
 public final class AddLocationNode extends LocationNode implements Canonicalizable.Binary<LocationNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(AddLocationNode.class);
+    public static final NodeClass<AddLocationNode> TYPE = NodeClass.get(AddLocationNode.class);
     @Input(InputType.Association) ValueNode x;
     @Input(InputType.Association) ValueNode y;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ArrayRangeWriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,9 +33,9 @@
 @NodeInfo
 public abstract class ArrayRangeWriteNode extends AbstractMemoryCheckpoint {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayRangeWriteNode.class);
+    public static final NodeClass<ArrayRangeWriteNode> TYPE = NodeClass.get(ArrayRangeWriteNode.class);
 
-    protected ArrayRangeWriteNode(NodeClass c, Stamp stamp) {
+    protected ArrayRangeWriteNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BoxNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -43,7 +43,7 @@
 @NodeInfo
 public final class BoxNode extends UnaryNode implements VirtualizableAllocation, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BoxNode.class);
+    public static final NodeClass<BoxNode> TYPE = NodeClass.get(BoxNode.class);
     protected final Kind boxingKind;
 
     public BoxNode(ValueNode value, ResolvedJavaType resultType, Kind boxingKind) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BranchProbabilityNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class BranchProbabilityNode extends FloatingNode implements Simplifiable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BranchProbabilityNode.class);
+    public static final NodeClass<BranchProbabilityNode> TYPE = NodeClass.get(BranchProbabilityNode.class);
     public static final double LIKELY_PROBABILITY = 0.6;
     public static final double NOT_LIKELY_PROBABILITY = 1 - LIKELY_PROBABILITY;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/BytecodeExceptionNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class BytecodeExceptionNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(BytecodeExceptionNode.class);
+    public static final NodeClass<BytecodeExceptionNode> TYPE = NodeClass.get(BytecodeExceptionNode.class);
     protected final Class<? extends Throwable> exceptionClass;
     @Input NodeInputList<ValueNode> arguments;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ComputeAddressNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class ComputeAddressNode extends FloatingNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ComputeAddressNode.class);
+    public static final NodeClass<ComputeAddressNode> TYPE = NodeClass.get(ComputeAddressNode.class);
     @Input ValueNode object;
     @Input(InputType.Association) ValueNode location;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ConstantLocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(nameTemplate = "Loc {p#locationIdentity/s}")
 public final class ConstantLocationNode extends LocationNode {
 
-    public static final NodeClass TYPE = NodeClass.get(ConstantLocationNode.class);
+    public static final NodeClass<ConstantLocationNode> TYPE = NodeClass.get(ConstantLocationNode.class);
     protected final LocationIdentity locationIdentity;
     protected final long displacement;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedAccessNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
  */
 @NodeInfo
 public abstract class FixedAccessNode extends DeoptimizingFixedWithNextNode implements Access {
-    public static final NodeClass TYPE = NodeClass.get(FixedAccessNode.class);
+    public static final NodeClass<FixedAccessNode> TYPE = NodeClass.get(FixedAccessNode.class);
 
     @OptionalInput(InputType.Guard) protected GuardingNode guard;
     @Input protected ValueNode object;
@@ -66,15 +66,15 @@
         this.nullCheck = check;
     }
 
-    protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp) {
+    protected FixedAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp) {
         this(c, object, location, stamp, BarrierType.NONE);
     }
 
-    protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) {
+    protected FixedAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) {
         this(c, object, location, stamp, null, barrierType, false, null);
     }
 
-    protected FixedAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) {
+    protected FixedAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) {
         super(c, stamp, stateBefore);
         this.object = object;
         this.location = location;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FixedValueAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public final class FixedValueAnchorNode extends FixedWithNextNode implements LIRLowerable, ValueProxy {
-    public static final NodeClass TYPE = NodeClass.get(FixedValueAnchorNode.class);
+    public static final NodeClass<FixedValueAnchorNode> TYPE = NodeClass.get(FixedValueAnchorNode.class);
 
     @Input ValueNode object;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatableAccessNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,17 +33,17 @@
  */
 @NodeInfo
 public abstract class FloatableAccessNode extends FixedAccessNode {
-    public static final NodeClass TYPE = NodeClass.get(FloatableAccessNode.class);
+    public static final NodeClass<FloatableAccessNode> TYPE = NodeClass.get(FloatableAccessNode.class);
 
-    protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp) {
+    protected FloatableAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp) {
         super(c, object, location, stamp);
     }
 
-    protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) {
+    protected FloatableAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) {
         super(c, object, location, stamp, guard, barrierType, false, null);
     }
 
-    protected FloatableAccessNode(NodeClass c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) {
+    protected FloatableAccessNode(NodeClass<?> c, ValueNode object, ValueNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType, boolean nullCheck, FrameState stateBefore) {
         super(c, object, location, stamp, guard, barrierType, nullCheck, stateBefore);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingAccessNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public abstract class FloatingAccessNode extends FloatingGuardedNode implements Access, MemoryAccess {
-    public static final NodeClass TYPE = NodeClass.get(FloatingAccessNode.class);
+    public static final NodeClass<FloatingAccessNode> TYPE = NodeClass.get(FloatingAccessNode.class);
 
     @Input ValueNode object;
     @Input(InputType.Association) LocationNode location;
@@ -52,13 +52,13 @@
         return location.getLocationIdentity();
     }
 
-    protected FloatingAccessNode(NodeClass c, ValueNode object, LocationNode location, Stamp stamp) {
+    protected FloatingAccessNode(NodeClass<?> c, ValueNode object, LocationNode location, Stamp stamp) {
         super(c, stamp);
         this.object = object;
         this.location = location;
     }
 
-    protected FloatingAccessNode(NodeClass c, ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) {
+    protected FloatingAccessNode(NodeClass<?> c, ValueNode object, LocationNode location, Stamp stamp, GuardingNode guard, BarrierType barrierType) {
         super(c, stamp, guard);
         this.object = object;
         this.location = location;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/FloatingReadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo
 public final class FloatingReadNode extends FloatingAccessNode implements LIRLowerable, Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(FloatingReadNode.class);
+    public static final NodeClass<FloatingReadNode> TYPE = NodeClass.get(FloatingReadNode.class);
 
     @OptionalInput(InputType.Memory) MemoryNode lastLocationAccess;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ForeignCallNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo(nameTemplate = "ForeignCall#{p#descriptor/s}", allowedUsageTypes = {InputType.Memory})
 public class ForeignCallNode extends AbstractMemoryCheckpoint implements LIRLowerable, DeoptimizingNode.DeoptDuring, MemoryCheckpoint.Multi {
-    public static final NodeClass TYPE = NodeClass.get(ForeignCallNode.class);
+    public static final NodeClass<ForeignCallNode> TYPE = NodeClass.get(ForeignCallNode.class);
 
     @Input protected NodeInputList<ValueNode> arguments;
     @OptionalInput(InputType.State) protected FrameState stateDuring;
@@ -64,7 +64,7 @@
         this.foreignCalls = foreignCalls;
     }
 
-    protected ForeignCallNode(NodeClass c, ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) {
+    protected ForeignCallNode(NodeClass<?> c, ForeignCallsProvider foreignCalls, ForeignCallDescriptor descriptor, Stamp stamp) {
         super(c, stamp);
         this.arguments = new NodeInputList<>(this);
         this.descriptor = descriptor;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IndexedLocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo(nameTemplate = "IdxLoc {p#locationIdentity/s}")
 public final class IndexedLocationNode extends LocationNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(IndexedLocationNode.class);
+    public static final NodeClass<IndexedLocationNode> TYPE = NodeClass.get(IndexedLocationNode.class);
 
     protected final LocationIdentity locationIdentity;
     protected final long displacement;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/IntegerSwitchNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public final class IntegerSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerSwitchNode.class);
+    public static final NodeClass<IntegerSwitchNode> TYPE = NodeClass.get(IntegerSwitchNode.class);
 
     protected final int[] keys;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaReadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class JavaReadNode extends FixedAccessNode implements Lowerable, GuardingNode, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(JavaReadNode.class);
+    public static final NodeClass<JavaReadNode> TYPE = NodeClass.get(JavaReadNode.class);
     protected final Kind readKind;
     protected final boolean compressible;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/JavaWriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class JavaWriteNode extends AbstractWriteNode implements Lowerable, StateSplit, MemoryAccess, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(JavaWriteNode.class);
+    public static final NodeClass<JavaWriteNode> TYPE = NodeClass.get(JavaWriteNode.class);
     protected final Kind writeKind;
     protected final boolean compressible;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadHubNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class LoadHubNode extends FloatingGuardedNode implements Lowerable, Canonicalizable, Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadHubNode.class);
+    public static final NodeClass<LoadHubNode> TYPE = NodeClass.get(LoadHubNode.class);
     @Input ValueNode value;
 
     public ValueNode getValue() {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LoadMethodNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class LoadMethodNode extends FixedWithNextNode implements Lowerable, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadMethodNode.class);
+    public static final NodeClass<LoadMethodNode> TYPE = NodeClass.get(LoadMethodNode.class);
     @Input ValueNode hub;
     protected final ResolvedJavaMethod method;
     protected final ResolvedJavaType receiverType;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/LocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public abstract class LocationNode extends FloatingNode implements LIRLowerable, ValueNumberable {
 
-    public static final NodeClass TYPE = NodeClass.get(LocationNode.class);
+    public static final NodeClass<LocationNode> TYPE = NodeClass.get(LocationNode.class);
 
     /**
      * Marker interface for locations in snippets.
@@ -47,7 +47,7 @@
     public interface Location {
     }
 
-    protected LocationNode(NodeClass c, Stamp stamp) {
+    protected LocationNode(NodeClass<?> c, Stamp stamp) {
         super(c, stamp);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/MembarNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -42,7 +42,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class MembarNode extends FixedWithNextNode implements LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(MembarNode.class);
+    public static final NodeClass<MembarNode> TYPE = NodeClass.get(MembarNode.class);
     protected final int barriers;
 
     public MembarNode(int barriers) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Guard})
 public final class NullCheckNode extends DeoptimizingFixedWithNextNode implements LIRLowerable, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(NullCheckNode.class);
+    public static final NodeClass<NullCheckNode> TYPE = NodeClass.get(NullCheckNode.class);
     @Input ValueNode object;
 
     public NullCheckNode(ValueNode object) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRLocalNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo(nameTemplate = "OSRLocal({p#index})")
 public final class OSRLocalNode extends AbstractLocalNode implements IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(OSRLocalNode.class);
+    public static final NodeClass<OSRLocalNode> TYPE = NodeClass.get(OSRLocalNode.class);
 
     public OSRLocalNode(int index, Stamp stamp) {
         super(TYPE, index, stamp);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/OSRStartNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public final class OSRStartNode extends StartNode implements Lowerable {
-    public static final NodeClass TYPE = NodeClass.get(OSRStartNode.class);
+    public static final NodeClass<OSRStartNode> TYPE = NodeClass.get(OSRStartNode.class);
 
     public OSRStartNode() {
         super(TYPE);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ReadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class ReadNode extends FloatableAccessNode implements LIRLowerable, Canonicalizable, PiPushable, Virtualizable, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(ReadNode.class);
+    public static final NodeClass<ReadNode> TYPE = NodeClass.get(ReadNode.class);
 
     public ReadNode(ValueNode object, ValueNode location, Stamp stamp, BarrierType barrierType) {
         super(TYPE, object, location, stamp, null, barrierType);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/StoreHubNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class StoreHubNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(StoreHubNode.class);
+    public static final NodeClass<StoreHubNode> TYPE = NodeClass.get(StoreHubNode.class);
     @Input ValueNode value;
     @Input ValueNode object;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/SwitchNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public abstract class SwitchNode extends ControlSplitNode {
 
-    public static final NodeClass TYPE = NodeClass.get(SwitchNode.class);
+    public static final NodeClass<SwitchNode> TYPE = NodeClass.get(SwitchNode.class);
     @Successor protected NodeSuccessorList<AbstractBeginNode> successors;
     @Input protected ValueNode value;
 
@@ -51,7 +51,7 @@
      * @param value the instruction that provides the value to be switched over
      * @param successors the list of successors of this switch
      */
-    protected SwitchNode(NodeClass c, ValueNode value, AbstractBeginNode[] successors, int[] keySuccessors, double[] keyProbabilities) {
+    protected SwitchNode(NodeClass<?> c, ValueNode value, AbstractBeginNode[] successors, int[] keySuccessors, double[] keyProbabilities) {
         super(c, StampFactory.forVoid());
         assert value.stamp().getStackKind().isNumericInteger() || value.stamp() instanceof AbstractPointerStamp : value.stamp() + " key not supported by SwitchNode";
         assert keySuccessors.length == keyProbabilities.length;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnboxNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 @NodeInfo
 public final class UnboxNode extends UnaryNode implements Virtualizable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnboxNode.class);
+    public static final NodeClass<UnboxNode> TYPE = NodeClass.get(UnboxNode.class);
     protected final Kind boxingKind;
 
     protected UnboxNode(ValueNode value, Kind boxingKind) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeAccessNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,13 +33,13 @@
 @NodeInfo
 public abstract class UnsafeAccessNode extends FixedWithNextNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsafeAccessNode.class);
+    public static final NodeClass<UnsafeAccessNode> TYPE = NodeClass.get(UnsafeAccessNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
     protected final Kind accessKind;
     protected final LocationIdentity locationIdentity;
 
-    protected UnsafeAccessNode(NodeClass c, Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) {
+    protected UnsafeAccessNode(NodeClass<?> c, Stamp stamp, ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) {
         super(c, stamp);
         assert accessKind != null;
         this.object = object;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public final class UnsafeCastNode extends FloatingGuardedNode implements LIRLowerable, Virtualizable, GuardingNode, IterableNodeType, Canonicalizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsafeCastNode.class);
+    public static final NodeClass<UnsafeCastNode> TYPE = NodeClass.get(UnsafeCastNode.class);
     @Input ValueNode object;
 
     public UnsafeCastNode(ValueNode object, Stamp stamp) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeLoadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class UnsafeLoadNode extends UnsafeAccessNode implements Lowerable, Virtualizable {
-    public static final NodeClass TYPE = NodeClass.get(UnsafeLoadNode.class);
+    public static final NodeClass<UnsafeLoadNode> TYPE = NodeClass.get(UnsafeLoadNode.class);
     @OptionalInput(InputType.Condition) LogicNode guardingCondition;
 
     public UnsafeLoadNode(ValueNode object, ValueNode offset, Kind accessKind, LocationIdentity locationIdentity) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeStoreNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class UnsafeStoreNode extends UnsafeAccessNode implements StateSplit, Lowerable, Virtualizable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsafeStoreNode.class);
+    public static final NodeClass<UnsafeStoreNode> TYPE = NodeClass.get(UnsafeStoreNode.class);
     @Input ValueNode value;
     @OptionalInput(InputType.State) FrameState stateAfter;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Anchor, InputType.Guard})
 public final class ValueAnchorNode extends FixedWithNextNode implements LIRLowerable, Simplifiable, Virtualizable, AnchoringNode, GuardingNode {
 
-    public static final NodeClass TYPE = NodeClass.get(ValueAnchorNode.class);
+    public static final NodeClass<ValueAnchorNode> TYPE = NodeClass.get(ValueAnchorNode.class);
     @OptionalInput(InputType.Guard) ValueNode anchored;
 
     public ValueAnchorNode(ValueNode value) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/WriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class WriteNode extends AbstractWriteNode implements LIRLowerable, Simplifiable, Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(WriteNode.class);
+    public static final NodeClass<WriteNode> TYPE = NodeClass.get(WriteNode.class);
 
     public WriteNode(ValueNode object, ValueNode value, ValueNode location, BarrierType barrierType) {
         super(TYPE, object, value, location, barrierType);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public abstract class AbstractNewArrayNode extends AbstractNewObjectNode implements ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractNewArrayNode.class);
+    public static final NodeClass<AbstractNewArrayNode> TYPE = NodeClass.get(AbstractNewArrayNode.class);
     @Input protected ValueNode length;
 
     @Override
@@ -43,7 +43,7 @@
         return length;
     }
 
-    public AbstractNewArrayNode(NodeClass c, Stamp stamp, ValueNode length, boolean fillContents) {
+    public AbstractNewArrayNode(NodeClass<?> c, Stamp stamp, ValueNode length, boolean fillContents) {
         super(c, stamp, fillContents);
         this.length = length;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AbstractNewObjectNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,10 +38,10 @@
 @NodeInfo
 public abstract class AbstractNewObjectNode extends DeoptimizingFixedWithNextNode implements Simplifiable, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AbstractNewObjectNode.class);
+    public static final NodeClass<AbstractNewObjectNode> TYPE = NodeClass.get(AbstractNewObjectNode.class);
     protected final boolean fillContents;
 
-    public AbstractNewObjectNode(NodeClass c, Stamp stamp, boolean fillContents) {
+    public AbstractNewObjectNode(NodeClass<?> c, Stamp stamp, boolean fillContents) {
         super(c, stamp);
         this.fillContents = fillContents;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public abstract class AccessArrayNode extends FixedWithNextNode {
 
-    public static final NodeClass TYPE = NodeClass.get(AccessArrayNode.class);
+    public static final NodeClass<AccessArrayNode> TYPE = NodeClass.get(AccessArrayNode.class);
     @Input protected ValueNode array;
 
     public ValueNode array() {
@@ -45,7 +45,7 @@
      *
      * @param array the instruction that produces the array object value
      */
-    public AccessArrayNode(NodeClass c, Stamp stamp, ValueNode array) {
+    public AccessArrayNode(NodeClass<?> c, Stamp stamp, ValueNode array) {
         super(c, stamp);
         this.array = array;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessFieldNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public abstract class AccessFieldNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AccessFieldNode.class);
+    public static final NodeClass<AccessFieldNode> TYPE = NodeClass.get(AccessFieldNode.class);
     @OptionalInput ValueNode object;
 
     protected final ResolvedJavaField field;
@@ -50,7 +50,7 @@
      * @param object the instruction producing the receiver object
      * @param field the compiler interface representation of the field
      */
-    public AccessFieldNode(NodeClass c, Stamp stamp, ValueNode object, ResolvedJavaField field) {
+    public AccessFieldNode(NodeClass<?> c, Stamp stamp, ValueNode object, ResolvedJavaField field) {
         super(c, stamp);
         this.object = object;
         this.field = field;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessIndexedNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public abstract class AccessIndexedNode extends AccessArrayNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AccessIndexedNode.class);
+    public static final NodeClass<AccessIndexedNode> TYPE = NodeClass.get(AccessIndexedNode.class);
     @Input protected ValueNode index;
     protected final Kind elementKind;
 
@@ -52,7 +52,7 @@
      * @param index the instruction producing the index
      * @param elementKind the kind of the elements of the array
      */
-    protected AccessIndexedNode(NodeClass c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
+    protected AccessIndexedNode(NodeClass<?> c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
         super(c, stamp, array);
         this.index = index;
         this.elementKind = elementKind;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AccessMonitorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public abstract class AccessMonitorNode extends AbstractMemoryCheckpoint implements MemoryCheckpoint, DeoptimizingNode.DeoptBefore, DeoptimizingNode.DeoptAfter {
 
-    public static final NodeClass TYPE = NodeClass.get(AccessMonitorNode.class);
+    public static final NodeClass<AccessMonitorNode> TYPE = NodeClass.get(AccessMonitorNode.class);
     @OptionalInput(InputType.State) FrameState stateBefore;
     @Input ValueNode object;
     @Input(InputType.Association) MonitorIdNode monitorId;
@@ -71,7 +71,7 @@
      *
      * @param object the instruction producing the object
      */
-    protected AccessMonitorNode(NodeClass c, ValueNode object, MonitorIdNode monitorId) {
+    protected AccessMonitorNode(NodeClass<?> c, ValueNode object, MonitorIdNode monitorId) {
         super(c, StampFactory.forVoid());
         this.object = object;
         this.monitorId = monitorId;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ArrayLengthNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class ArrayLengthNode extends FixedWithNextNode implements Canonicalizable.Unary<ValueNode>, Lowerable, Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayLengthNode.class);
+    public static final NodeClass<ArrayLengthNode> TYPE = NodeClass.get(ArrayLengthNode.class);
     @Input ValueNode array;
 
     public ValueNode array() {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndAddNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class AtomicReadAndAddNode extends AbstractMemoryCheckpoint implements LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(AtomicReadAndAddNode.class);
+    public static final NodeClass<AtomicReadAndAddNode> TYPE = NodeClass.get(AtomicReadAndAddNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
     @Input ValueNode delta;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/AtomicReadAndWriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo
 public final class AtomicReadAndWriteNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(AtomicReadAndWriteNode.class);
+    public static final NodeClass<AtomicReadAndWriteNode> TYPE = NodeClass.get(AtomicReadAndWriteNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
     @Input ValueNode newValue;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastDynamicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class CheckCastDynamicNode extends FixedWithNextNode implements Canonicalizable.Binary<ValueNode>, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(CheckCastDynamicNode.class);
+    public static final NodeClass<CheckCastDynamicNode> TYPE = NodeClass.get(CheckCastDynamicNode.class);
     @Input ValueNode object;
     @Input ValueNode hub;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CheckCastNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -44,7 +44,7 @@
 @NodeInfo
 public final class CheckCastNode extends FixedWithNextNode implements Canonicalizable, Simplifiable, Lowerable, Virtualizable, ValueProxy {
 
-    public static final NodeClass TYPE = NodeClass.get(CheckCastNode.class);
+    public static final NodeClass<CheckCastNode> TYPE = NodeClass.get(CheckCastNode.class);
     @Input protected ValueNode object;
     protected final ResolvedJavaType type;
     protected final JavaTypeProfile profile;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ClassIsAssignableFromNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public final class ClassIsAssignableFromNode extends LogicNode implements Canonicalizable.Binary<ValueNode>, Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ClassIsAssignableFromNode.class);
+    public static final NodeClass<ClassIsAssignableFromNode> TYPE = NodeClass.get(ClassIsAssignableFromNode.class);
     @Input ValueNode thisClass;
     @Input ValueNode otherClass;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/CompareAndSwapNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class CompareAndSwapNode extends AbstractMemoryCheckpoint implements Lowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(CompareAndSwapNode.class);
+    public static final NodeClass<CompareAndSwapNode> TYPE = NodeClass.get(CompareAndSwapNode.class);
     @Input ValueNode object;
     @Input ValueNode offset;
     @Input ValueNode expected;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public class DynamicNewArrayNode extends AbstractNewArrayNode {
-    public static final NodeClass TYPE = NodeClass.get(DynamicNewArrayNode.class);
+    public static final NodeClass<DynamicNewArrayNode> TYPE = NodeClass.get(DynamicNewArrayNode.class);
 
     @Input ValueNode elementType;
 
@@ -57,7 +57,7 @@
         this(TYPE, elementType, length, fillContents, knownElementKind);
     }
 
-    protected DynamicNewArrayNode(NodeClass c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) {
+    protected DynamicNewArrayNode(NodeClass<?> c, ValueNode elementType, ValueNode length, boolean fillContents, Kind knownElementKind) {
         super(c, StampFactory.objectNonNull(), length, fillContents);
         this.elementType = elementType;
         this.knownElementKind = knownElementKind;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/DynamicNewInstanceNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo
 public final class DynamicNewInstanceNode extends AbstractNewObjectNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(DynamicNewInstanceNode.class);
+    public static final NodeClass<DynamicNewInstanceNode> TYPE = NodeClass.get(DynamicNewInstanceNode.class);
 
     @Input ValueNode clazz;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/ExceptionObjectNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class ExceptionObjectNode extends DispatchBeginNode implements Lowerable, MemoryCheckpoint.Single {
-    public static final NodeClass TYPE = NodeClass.get(ExceptionObjectNode.class);
+    public static final NodeClass<ExceptionObjectNode> TYPE = NodeClass.get(ExceptionObjectNode.class);
 
     public ExceptionObjectNode(MetaAccessProvider metaAccess) {
         super(TYPE, StampFactory.declaredNonNull(metaAccess.lookupJavaType(Throwable.class)));
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfDynamicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public class InstanceOfDynamicNode extends LogicNode implements Canonicalizable.Binary<ValueNode>, Lowerable {
-    public static final NodeClass TYPE = NodeClass.get(InstanceOfDynamicNode.class);
+    public static final NodeClass<InstanceOfDynamicNode> TYPE = NodeClass.get(InstanceOfDynamicNode.class);
 
     @Input ValueNode object;
     @Input ValueNode mirror;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/InstanceOfNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public final class InstanceOfNode extends UnaryOpLogicNode implements Lowerable, Virtualizable {
-    public static final NodeClass TYPE = NodeClass.get(InstanceOfNode.class);
+    public static final NodeClass<InstanceOfNode> TYPE = NodeClass.get(InstanceOfNode.class);
 
     protected final ResolvedJavaType type;
     protected JavaTypeProfile profile;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadExceptionObjectNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class LoadExceptionObjectNode extends AbstractStateSplit implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadExceptionObjectNode.class);
+    public static final NodeClass<LoadExceptionObjectNode> TYPE = NodeClass.get(LoadExceptionObjectNode.class);
 
     public LoadExceptionObjectNode(Stamp stamp) {
         super(TYPE, stamp);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadFieldNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
 @NodeInfo(nameTemplate = "LoadField#{p#field/s}")
 public final class LoadFieldNode extends AccessFieldNode implements Canonicalizable.Unary<ValueNode>, VirtualizableRoot, UncheckedInterfaceProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadFieldNode.class);
+    public static final NodeClass<LoadFieldNode> TYPE = NodeClass.get(LoadFieldNode.class);
 
     public LoadFieldNode(ValueNode object, ResolvedJavaField field) {
         super(TYPE, createStamp(field), object, field);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoadIndexedNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 @NodeInfo
 public class LoadIndexedNode extends AccessIndexedNode implements Virtualizable, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadIndexedNode.class);
+    public static final NodeClass<LoadIndexedNode> TYPE = NodeClass.get(LoadIndexedNode.class);
 
     /**
      * Creates a new LoadIndexedNode.
@@ -58,7 +58,7 @@
         return new LoadIndexedNode(array, index, elementKind);
     }
 
-    protected LoadIndexedNode(NodeClass c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
+    protected LoadIndexedNode(NodeClass<?> c, Stamp stamp, ValueNode array, ValueNode index, Kind elementKind) {
         super(c, stamp, array, index, elementKind);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredAtomicReadAndWriteNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class LoweredAtomicReadAndWriteNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(LoweredAtomicReadAndWriteNode.class);
+    public static final NodeClass<LoweredAtomicReadAndWriteNode> TYPE = NodeClass.get(LoweredAtomicReadAndWriteNode.class);
     @Input ValueNode newValue;
     @OptionalInput(InputType.State) FrameState stateAfter;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/LoweredCompareAndSwapNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Value, InputType.Memory})
 public final class LoweredCompareAndSwapNode extends FixedAccessNode implements StateSplit, LIRLowerable, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(LoweredCompareAndSwapNode.class);
+    public static final NodeClass<LoweredCompareAndSwapNode> TYPE = NodeClass.get(LoweredCompareAndSwapNode.class);
     @Input ValueNode expectedValue;
     @Input ValueNode newValue;
     @OptionalInput(InputType.State) FrameState stateAfter;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MethodCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,14 +34,14 @@
 
 @NodeInfo
 public class MethodCallTargetNode extends CallTargetNode implements IterableNodeType, Simplifiable {
-    public static final NodeClass TYPE = NodeClass.get(MethodCallTargetNode.class);
+    public static final NodeClass<MethodCallTargetNode> TYPE = NodeClass.get(MethodCallTargetNode.class);
     protected final JavaType returnType;
 
     public MethodCallTargetNode(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) {
         this(TYPE, invokeKind, targetMethod, arguments, returnType);
     }
 
-    protected MethodCallTargetNode(NodeClass c, InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) {
+    protected MethodCallTargetNode(NodeClass<?> c, InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] arguments, JavaType returnType) {
         super(c, arguments, targetMethod, invokeKind);
         this.returnType = returnType;
     }
@@ -248,7 +248,7 @@
     }
 
     public static MethodCallTargetNode find(StructuredGraph graph, ResolvedJavaMethod method) {
-        for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.TYPE)) {
             if (target.targetMethod().equals(method)) {
                 return target;
             }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorEnterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class MonitorEnterNode extends AccessMonitorNode implements Virtualizable, Lowerable, IterableNodeType, MonitorEnter, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(MonitorEnterNode.class);
+    public static final NodeClass<MonitorEnterNode> TYPE = NodeClass.get(MonitorEnterNode.class);
 
     public MonitorEnterNode(ValueNode object, MonitorIdNode monitorId) {
         super(TYPE, object, monitorId);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorExitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class MonitorExitNode extends AccessMonitorNode implements Virtualizable, Simplifiable, Lowerable, IterableNodeType, MonitorExit, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(MonitorExitNode.class);
+    public static final NodeClass<MonitorExitNode> TYPE = NodeClass.get(MonitorExitNode.class);
     @OptionalInput ValueNode escapedReturnValue;
 
     public MonitorExitNode(ValueNode object, MonitorIdNode monitorId, ValueNode escapedReturnValue) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/MonitorIdNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,14 +36,14 @@
 @NodeInfo(allowedUsageTypes = {InputType.Association})
 public class MonitorIdNode extends ValueNode implements IterableNodeType, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(MonitorIdNode.class);
+    public static final NodeClass<MonitorIdNode> TYPE = NodeClass.get(MonitorIdNode.class);
     protected int lockDepth;
 
     public MonitorIdNode(int lockDepth) {
         this(TYPE, lockDepth);
     }
 
-    protected MonitorIdNode(NodeClass c, int lockDepth) {
+    protected MonitorIdNode(NodeClass<?> c, int lockDepth) {
         super(c, StampFactory.forVoid());
         this.lockDepth = lockDepth;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,13 +41,13 @@
 @NodeInfo
 public class NewArrayNode extends AbstractNewArrayNode implements VirtualizableAllocation {
 
-    public static final NodeClass TYPE = NodeClass.get(NewArrayNode.class);
+    public static final NodeClass<NewArrayNode> TYPE = NodeClass.get(NewArrayNode.class);
 
     public NewArrayNode(ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
         super(TYPE, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents);
     }
 
-    protected NewArrayNode(NodeClass c, ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
+    protected NewArrayNode(NodeClass<?> c, ResolvedJavaType elementType, ValueNode length, boolean fillContents) {
         super(c, StampFactory.exactNonNull(elementType.getArrayClass()), length, fillContents);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewInstanceNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo(nameTemplate = "New {p#instanceClass/s}")
 public final class NewInstanceNode extends AbstractNewObjectNode implements VirtualizableAllocation {
 
-    public static final NodeClass TYPE = NodeClass.get(NewInstanceNode.class);
+    public static final NodeClass<NewInstanceNode> TYPE = NodeClass.get(NewInstanceNode.class);
     protected final ResolvedJavaType instanceClass;
 
     public NewInstanceNode(ResolvedJavaType type, boolean fillContents) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/NewMultiArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class NewMultiArrayNode extends DeoptimizingFixedWithNextNode implements Lowerable, ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(NewMultiArrayNode.class);
+    public static final NodeClass<NewMultiArrayNode> TYPE = NodeClass.get(NewMultiArrayNode.class);
     @Input protected NodeInputList<ValueNode> dimensions;
     protected final ResolvedJavaType type;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/RegisterFinalizerNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class RegisterFinalizerNode extends AbstractStateSplit implements Canonicalizable.Unary<ValueNode>, LIRLowerable, Virtualizable, DeoptimizingNode.DeoptAfter {
 
-    public static final NodeClass TYPE = NodeClass.get(RegisterFinalizerNode.class);
+    public static final NodeClass<RegisterFinalizerNode> TYPE = NodeClass.get(RegisterFinalizerNode.class);
     @OptionalInput(InputType.State) FrameState deoptState;
     @Input ValueNode value;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/SelfReplacingMethodCallTargetNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class SelfReplacingMethodCallTargetNode extends MethodCallTargetNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(SelfReplacingMethodCallTargetNode.class);
+    public static final NodeClass<SelfReplacingMethodCallTargetNode> TYPE = NodeClass.get(SelfReplacingMethodCallTargetNode.class);
     // Replacement method data
     protected final ResolvedJavaMethod replacementTargetMethod;
     protected final JavaType replacementReturnType;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreFieldNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
  */
 @NodeInfo(nameTemplate = "StoreField#{p#field/s}")
 public final class StoreFieldNode extends AccessFieldNode implements StateSplit, VirtualizableRoot {
-    public static final NodeClass TYPE = NodeClass.get(StoreFieldNode.class);
+    public static final NodeClass<StoreFieldNode> TYPE = NodeClass.get(StoreFieldNode.class);
 
     @Input ValueNode value;
     @OptionalInput(InputType.State) FrameState stateAfter;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/StoreIndexedNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class StoreIndexedNode extends AccessIndexedNode implements StateSplit, Lowerable, Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(StoreIndexedNode.class);
+    public static final NodeClass<StoreIndexedNode> TYPE = NodeClass.get(StoreIndexedNode.class);
     @Input ValueNode value;
     @OptionalInput(InputType.State) FrameState stateAfter;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/java/TypeSwitchNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -41,7 +41,7 @@
 @NodeInfo
 public final class TypeSwitchNode extends SwitchNode implements LIRLowerable, Simplifiable {
 
-    public static final NodeClass TYPE = NodeClass.get(TypeSwitchNode.class);
+    public static final NodeClass<TypeSwitchNode> TYPE = NodeClass.get(TypeSwitchNode.class);
     protected final ResolvedJavaType[] keys;
 
     public TypeSwitchNode(ValueNode value, AbstractBeginNode[] successors, ResolvedJavaType[] keys, double[] keyProbabilities, int[] keySuccessors) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/AllocatedObjectNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class AllocatedObjectNode extends FloatingNode implements Virtualizable, ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(AllocatedObjectNode.class);
+    public static final NodeClass<AllocatedObjectNode> TYPE = NodeClass.get(AllocatedObjectNode.class);
     @Input VirtualObjectNode virtualObject;
     @Input(InputType.Extension) CommitAllocationNode commit;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo(nameTemplate = "Alloc {i#virtualObjects}", allowedUsageTypes = {InputType.Extension})
 public final class CommitAllocationNode extends FixedWithNextNode implements VirtualizableAllocation, Lowerable, Simplifiable {
 
-    public static final NodeClass TYPE = NodeClass.get(CommitAllocationNode.class);
+    public static final NodeClass<CommitAllocationNode> TYPE = NodeClass.get(CommitAllocationNode.class);
     @Input NodeInputList<VirtualObjectNode> virtualObjects = new NodeInputList<>(this);
     @Input NodeInputList<ValueNode> values = new NodeInputList<>(this);
     @Input(InputType.Association) NodeInputList<MonitorIdNode> locks = new NodeInputList<>(this);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/EscapeObjectState.java	Mon Feb 16 17:47:43 2015 +0100
@@ -29,7 +29,7 @@
 
 @NodeInfo
 public abstract class EscapeObjectState extends VirtualState implements ValueNumberable {
-    public static final NodeClass TYPE = NodeClass.get(EscapeObjectState.class);
+    public static final NodeClass<EscapeObjectState> TYPE = NodeClass.get(EscapeObjectState.class);
 
     @Input protected VirtualObjectNode object;
 
@@ -37,7 +37,7 @@
         return object;
     }
 
-    public EscapeObjectState(NodeClass c, VirtualObjectNode object) {
+    public EscapeObjectState(NodeClass<?> c, VirtualObjectNode object) {
         super(c);
         this.object = object;
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualArrayNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo(nameTemplate = "VirtualArray {p#componentType/s}[{p#length}]")
 public final class VirtualArrayNode extends VirtualObjectNode implements ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualArrayNode.class);
+    public static final NodeClass<VirtualArrayNode> TYPE = NodeClass.get(VirtualArrayNode.class);
     protected final ResolvedJavaType componentType;
     protected final int length;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualBoxingNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class VirtualBoxingNode extends VirtualInstanceNode {
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualBoxingNode.class);
+    public static final NodeClass<VirtualBoxingNode> TYPE = NodeClass.get(VirtualBoxingNode.class);
     protected final Kind boxingKind;
 
     public VirtualBoxingNode(ResolvedJavaType type, Kind boxingKind) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualInstanceNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo(nameTemplate = "VirtualInstance {p#type/s}")
 public class VirtualInstanceNode extends VirtualObjectNode {
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualInstanceNode.class);
+    public static final NodeClass<VirtualInstanceNode> TYPE = NodeClass.get(VirtualInstanceNode.class);
     protected final ResolvedJavaType type;
     protected final ResolvedJavaField[] fields;
 
@@ -42,11 +42,11 @@
         this(TYPE, type, fields, hasIdentity);
     }
 
-    protected VirtualInstanceNode(NodeClass c, ResolvedJavaType type, boolean hasIdentity) {
+    protected VirtualInstanceNode(NodeClass<?> c, ResolvedJavaType type, boolean hasIdentity) {
         this(c, type, type.getInstanceFields(true), hasIdentity);
     }
 
-    protected VirtualInstanceNode(NodeClass c, ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) {
+    protected VirtualInstanceNode(NodeClass<?> c, ResolvedJavaType type, ResolvedJavaField[] fields, boolean hasIdentity) {
         super(c, type, hasIdentity);
         this.type = type;
         this.fields = fields;
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/VirtualObjectNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,10 +32,10 @@
 @NodeInfo
 public abstract class VirtualObjectNode extends ValueNode implements LIRLowerable, IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualObjectNode.class);
+    public static final NodeClass<VirtualObjectNode> TYPE = NodeClass.get(VirtualObjectNode.class);
     protected boolean hasIdentity;
 
-    protected VirtualObjectNode(NodeClass c, ResolvedJavaType type, boolean hasIdentity) {
+    protected VirtualObjectNode(NodeClass<?> c, ResolvedJavaType type, boolean hasIdentity) {
         super(c, StampFactory.exactNonNull(type));
         this.hasIdentity = hasIdentity;
     }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CanonicalizerPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -187,7 +187,7 @@
             if (node.isAlive()) {
                 METRIC_PROCESSED_NODES.increment();
 
-                NodeClass nodeClass = node.getNodeClass();
+                NodeClass<?> nodeClass = node.getNodeClass();
                 if (tryGlobalValueNumbering(node, nodeClass)) {
                     return;
                 }
@@ -213,7 +213,7 @@
             }
         }
 
-        public static boolean tryGlobalValueNumbering(Node node, NodeClass nodeClass) {
+        public static boolean tryGlobalValueNumbering(Node node, NodeClass<?> nodeClass) {
             if (nodeClass.valueNumberable() && !nodeClass.isLeafNode()) {
                 Node newNode = node.graph().findDuplicate(node);
                 if (newNode != null) {
@@ -228,7 +228,7 @@
             return false;
         }
 
-        public boolean tryCanonicalize(final Node node, NodeClass nodeClass) {
+        public boolean tryCanonicalize(final Node node, NodeClass<?> nodeClass) {
             if (customCanonicalizer != null) {
                 Node canonical = customCanonicalizer.canonicalize(node);
                 if (performReplacement(node, canonical)) {
@@ -254,7 +254,7 @@
             }
         }
 
-        public boolean baseTryCanonicalize(final Node node, NodeClass nodeClass) {
+        public boolean baseTryCanonicalize(final Node node, NodeClass<?> nodeClass) {
             if (nodeClass.isCanonicalizable()) {
                 METRIC_CANONICALIZATION_CONSIDERED_NODES.increment();
                 try (Scope s = Debug.scope("CanonicalizeNode", node)) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/CleanTypeProfileProxyPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,13 +40,13 @@
     protected void run(StructuredGraph graph, PhaseContext context) {
         HashSetNodeEventListener listener = new HashSetNodeEventListener();
         try (NodeEventScope s = graph.trackNodeEvents(listener)) {
-            for (TypeProfileProxyNode proxy : graph.getNodes(TypeProfileProxyNode.class)) {
+            for (TypeProfileProxyNode proxy : graph.getNodes(TypeProfileProxyNode.TYPE)) {
                 graph.replaceFloating(proxy, proxy.getValue());
             }
         }
         if (!listener.getNodes().isEmpty()) {
             canonicalizer.applyIncremental(graph, context, listener.getNodes());
         }
-        assert graph.getNodes(TypeProfileProxyNode.class).count() == 0;
+        assert graph.getNodes(TypeProfileProxyNode.TYPE).count() == 0;
     }
 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ConvertDeoptimizeToGuardPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -58,15 +58,15 @@
     @Override
     protected void run(final StructuredGraph graph) {
         assert graph.hasValueProxies() : "ConvertDeoptimizeToGuardPhase always creates proxies";
-        if (graph.getNodes(DeoptimizeNode.class).isEmpty()) {
+        if (graph.getNodes(DeoptimizeNode.TYPE).isEmpty()) {
             return;
         }
-        for (DeoptimizeNode d : graph.getNodes(DeoptimizeNode.class)) {
+        for (DeoptimizeNode d : graph.getNodes(DeoptimizeNode.TYPE)) {
             assert d.isAlive();
             visitDeoptBegin(AbstractBeginNode.prevBegin(d), d.action(), d.reason(), graph);
         }
 
-        for (FixedGuardNode fixedGuard : graph.getNodes(FixedGuardNode.class)) {
+        for (FixedGuardNode fixedGuard : graph.getNodes(FixedGuardNode.TYPE)) {
 
             AbstractBeginNode pred = AbstractBeginNode.prevBegin(fixedGuard);
             if (pred instanceof AbstractMergeNode) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeadCodeEliminationPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -79,7 +79,7 @@
         deleteNodes(flood, graph);
 
         // remove chained Merges
-        for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class)) {
+        for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE)) {
             if (merge.forwardEndCount() == 1 && !(merge instanceof LoopBeginNode)) {
                 graph.reduceTrivialMerge(merge);
             }
@@ -100,7 +100,7 @@
     }
 
     private static void disconnectCFGNodes(NodeFlood flood, StructuredGraph graph) {
-        for (AbstractEndNode node : graph.getNodes(AbstractEndNode.class)) {
+        for (AbstractEndNode node : graph.getNodes(AbstractEndNode.TYPE)) {
             if (!flood.isMarked(node)) {
                 AbstractMergeNode merge = node.merge();
                 if (merge != null && flood.isMarked(merge)) {
@@ -109,7 +109,7 @@
                 }
             }
         }
-        for (LoopBeginNode loop : graph.getNodes(LoopBeginNode.class)) {
+        for (LoopBeginNode loop : graph.getNodes(LoopBeginNode.TYPE)) {
             if (flood.isMarked(loop)) {
                 boolean reachable = false;
                 for (LoopEndNode end : loop.loopEnds()) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/DeoptimizationGroupingPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
     @Override
     protected void run(StructuredGraph graph, MidTierContext context) {
         ControlFlowGraph cfg = null;
-        for (FrameState fs : graph.getNodes(FrameState.class)) {
+        for (FrameState fs : graph.getNodes(FrameState.TYPE)) {
             FixedNode target = null;
             PhiNode reasonActionPhi = null;
             PhiNode speculationPhi = null;
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/ExpandLogicPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,10 +32,10 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.class)) {
+        for (ShortCircuitOrNode logic : graph.getNodes(ShortCircuitOrNode.TYPE)) {
             processBinary(logic);
         }
-        assert graph.getNodes(ShortCircuitOrNode.class).isEmpty();
+        assert graph.getNodes(ShortCircuitOrNode.TYPE).isEmpty();
     }
 
     private static void processBinary(ShortCircuitOrNode binary) {
@@ -60,9 +60,9 @@
         double firstIfProbability = shortCircuitProbability;
         /*
          * P(Y | not(X)) = P(Y inter not(X)) / P(not(X)) = (P(X union Y) - P(X)) / (1 - P(X))
-         *
+         * 
          * P(X) = shortCircuitProbability
-         *
+         * 
          * P(X union Y) = ifNode.probability(trueTarget)
          */
         double secondIfProbability = (ifNode.probability(trueTarget) - shortCircuitProbability) / (1 - shortCircuitProbability);
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/FrameStateAssignmentPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -110,7 +110,7 @@
         if (graph.getGuardsStage().areFrameStatesAtSideEffects()) {
             ReentrantNodeIterator.apply(new FrameStateAssignmentClosure(), graph.start(), null);
             graph.setGuardsStage(GuardsStage.AFTER_FSA);
-            graph.getNodes(FrameState.class).filter(state -> state.hasNoUsages()).forEach(GraphUtil::killWithUnusedFloatingInputs);
+            graph.getNodes(FrameState.TYPE).filter(state -> state.hasNoUsages()).forEach(GraphUtil::killWithUnusedFloatingInputs);
         }
     }
 
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LockEliminationPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (MonitorExitNode node : graph.getNodes(MonitorExitNode.class)) {
+        for (MonitorExitNode node : graph.getNodes(MonitorExitNode.TYPE)) {
             FixedNode next = node.next();
             if (next instanceof MonitorEnterNode) {
                 MonitorEnterNode monitorEnterNode = (MonitorEnterNode) next;
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoopSafepointInsertionPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
     @Override
     protected void run(StructuredGraph graph) {
         if (GenLoopSafepoints.getValue()) {
-            for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.class)) {
+            for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.TYPE)) {
                 if (loopEndNode.canSafepoint()) {
                     SafepointNode safepointNode = graph.add(new SafepointNode());
                     graph.addBeforeFixed(loopEndNode, safepointNode);
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
 
     @NodeInfo
     static final class DummyGuardHandle extends ValueNode implements GuardedNode {
-        public static final NodeClass TYPE = NodeClass.get(DummyGuardHandle.class);
+        public static final NodeClass<DummyGuardHandle> TYPE = NodeClass.get(DummyGuardHandle.class);
         @Input(InputType.Guard) GuardingNode guard;
 
         public DummyGuardHandle(GuardingNode guard) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/NonNullParametersPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
     @Override
     protected void run(StructuredGraph graph) {
         Stamp nonNull = StampFactory.objectNonNull();
-        for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
+        for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) {
             if (param.stamp() instanceof ObjectStamp) {
                 ObjectStamp paramStamp = (ObjectStamp) param.stamp();
                 param.setStamp(paramStamp.join(nonNull));
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/OptimizeGuardAnchorsPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -55,7 +55,7 @@
     @Override
     protected void run(StructuredGraph graph) {
         LazyCFG cfg = new LazyCFG(graph);
-        for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.class)) {
+        for (AbstractBeginNode begin : graph.getNodes(AbstractBeginNode.TYPE)) {
             if (!(begin instanceof StartNode || begin.predecessor() instanceof ControlSplitNode)) {
                 NodeIterable<GuardNode> guards = begin.guards();
                 if (guards.isNotEmpty()) {
@@ -71,7 +71,7 @@
                 }
             }
         }
-        for (ControlSplitNode controlSplit : graph.getNodes(ControlSplitNode.class)) {
+        for (ControlSplitNode controlSplit : graph.getNodes(ControlSplitNode.TYPE)) {
             optimizeAtControlSplit(controlSplit, cfg);
         }
     }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/PushThroughPiPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,7 +34,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (PiNode pi : graph.getNodes(PiNode.class)) {
+        for (PiNode pi : graph.getNodes(PiNode.TYPE)) {
             for (Node n : pi.usages().snapshot()) {
                 if (n instanceof PiPushable) {
                     PiPushable pip = (PiPushable) n;
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/RemoveValueProxyPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,12 +30,12 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (ProxyNode vpn : graph.getNodes(ProxyNode.class)) {
+        for (ProxyNode vpn : graph.getNodes(ProxyNode.TYPE)) {
             if (vpn instanceof ValueProxyNode) {
                 graph.replaceFloating(vpn, vpn.value());
             }
         }
-        for (LoopExitNode exit : graph.getNodes(LoopExitNode.class)) {
+        for (LoopExitNode exit : graph.getNodes(LoopExitNode.TYPE)) {
             FrameState stateAfter = exit.stateAfter();
             if (stateAfter != null) {
                 exit.setStateAfter(null);
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -63,7 +63,7 @@
 
     @NodeInfo(allowedUsageTypes = {InputType.Guard, InputType.Anchor})
     static final class DummyAnchorNode extends FixedWithNextNode implements GuardingNode, AnchoringNode {
-        public static final NodeClass TYPE = NodeClass.get(DummyAnchorNode.class);
+        public static final NodeClass<DummyAnchorNode> TYPE = NodeClass.get(DummyAnchorNode.class);
 
         public DummyAnchorNode() {
             super(TYPE, StampFactory.forVoid());
@@ -158,12 +158,12 @@
 
     @Override
     protected void run(StructuredGraph graph, PhaseContext phaseContext) {
-        if (graph.hasNode(AbstractMergeNode.class)) {
+        if (graph.hasNode(AbstractMergeNode.TYPE)) {
             ToDoubleFunction<FixedNode> nodeProbabilities = new FixedNodeProbabilityCache();
 
             // A snapshot is taken here, so that new MergeNode instances aren't considered for tail
             // duplication.
-            for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.class).snapshot()) {
+            for (AbstractMergeNode merge : graph.getNodes(AbstractMergeNode.TYPE).snapshot()) {
                 if (!(merge instanceof LoopBeginNode) && nodeProbabilities.applyAsDouble(merge) >= TailDuplicationProbability.getValue()) {
                     tailDuplicate(merge, DEFAULT_DECISION, null, phaseContext, canonicalizer);
                 }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/UseTrappingNullChecksPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,10 +48,10 @@
         }
         assert graph.getGuardsStage().areFrameStatesAtDeopts();
 
-        for (DeoptimizeNode deopt : graph.getNodes(DeoptimizeNode.class)) {
+        for (DeoptimizeNode deopt : graph.getNodes(DeoptimizeNode.TYPE)) {
             tryUseTrappingNullCheck(deopt, deopt.predecessor(), deopt.reason(), deopt.getSpeculation());
         }
-        for (DynamicDeoptimizeNode deopt : graph.getNodes(DynamicDeoptimizeNode.class)) {
+        for (DynamicDeoptimizeNode deopt : graph.getNodes(DynamicDeoptimizeNode.TYPE)) {
             tryUseTrappingNullCheck(context.getMetaAccess(), deopt);
         }
     }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/VerifyHeapAtReturnPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) {
+        for (ReturnNode returnNode : graph.getNodes(ReturnNode.TYPE)) {
             VerifyHeapNode.addBefore(returnNode);
         }
     }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/InliningUtil.java	Mon Feb 16 17:47:43 2015 +0100
@@ -331,7 +331,7 @@
             processFrameStates(invoke, inlineGraph, duplicates, stateAtExceptionEdge, returnNodes.size() > 1);
             int callerLockDepth = stateAfter.nestedLockDepth();
             if (callerLockDepth != 0) {
-                for (MonitorIdNode original : inlineGraph.getNodes(MonitorIdNode.class)) {
+                for (MonitorIdNode original : inlineGraph.getNodes(MonitorIdNode.TYPE)) {
                     MonitorIdNode monitor = (MonitorIdNode) duplicates.get(original);
                     monitor.setLockDepth(monitor.getLockDepth() + callerLockDepth);
                 }
@@ -389,11 +389,11 @@
     }
 
     private static void processSimpleInfopoints(Invoke invoke, StructuredGraph inlineGraph, Map<Node, Node> duplicates) {
-        if (inlineGraph.getNodes(SimpleInfopointNode.class).isEmpty()) {
+        if (inlineGraph.getNodes(SimpleInfopointNode.TYPE).isEmpty()) {
             return;
         }
         BytecodePosition pos = new BytecodePosition(toBytecodePosition(invoke.stateAfter()), invoke.asNode().graph().method(), invoke.bci());
-        for (SimpleInfopointNode original : inlineGraph.getNodes(SimpleInfopointNode.class)) {
+        for (SimpleInfopointNode original : inlineGraph.getNodes(SimpleInfopointNode.TYPE)) {
             SimpleInfopointNode duplicate = (SimpleInfopointNode) duplicates.get(original);
             duplicate.addCaller(pos);
         }
@@ -410,7 +410,7 @@
         FrameState stateAtReturn = invoke.stateAfter();
         FrameState outerFrameState = null;
         Kind invokeReturnKind = invoke.asNode().getKind();
-        for (FrameState original : inlineGraph.getNodes(FrameState.class)) {
+        for (FrameState original : inlineGraph.getNodes(FrameState.TYPE)) {
             FrameState frameState = (FrameState) duplicates.get(original);
             if (frameState != null && frameState.isAlive()) {
                 if (frameState.bci == BytecodeFrame.AFTER_BCI) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/AbstractInlineInfo.java	Mon Feb 16 17:47:43 2015 +0100
@@ -73,7 +73,7 @@
     }
 
     public static void getInlinedParameterUsages(Collection<Node> parameterUsages, StructuredGraph calleeGraph, Map<Node, Node> duplicateMap) {
-        for (ParameterNode parameter : calleeGraph.getNodes(ParameterNode.class)) {
+        for (ParameterNode parameter : calleeGraph.getNodes(ParameterNode.TYPE)) {
             for (Node usage : parameter.usages()) {
                 Node node = duplicateMap.get(usage);
                 if (node != null && node.isAlive()) {
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/info/elem/InlineableGraph.java	Mon Feb 16 17:47:43 2015 +0100
@@ -143,7 +143,7 @@
     private ArrayList<Node> replaceParamsWithMoreInformativeArguments(final Invoke invoke, final HighTierContext context) {
         NodeInputList<ValueNode> args = invoke.callTarget().arguments();
         ArrayList<Node> parameterUsages = null;
-        List<ParameterNode> params = graph.getNodes(ParameterNode.class).snapshot();
+        List<ParameterNode> params = graph.getNodes(ParameterNode.TYPE).snapshot();
         assert params.size() <= args.size();
         /*
          * param-nodes that aren't used (eg, as a result of canonicalization) don't occur in
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/CallsiteHolderExplorable.java	Mon Feb 16 17:47:43 2015 +0100
@@ -94,7 +94,7 @@
             return Collections.EMPTY_SET;
         }
         Set<ParameterNode> result = Node.newSet();
-        for (ParameterNode p : graph.getNodes(ParameterNode.class)) {
+        for (ParameterNode p : graph.getNodes(ParameterNode.TYPE)) {
             if (freshlyInstantiatedArguments.get(p.index())) {
                 result.add(p);
             }
@@ -186,7 +186,7 @@
     }
 
     public boolean containsParam(ParameterNode param) {
-        for (ParameterNode p : graph.getNodes(ParameterNode.class)) {
+        for (ParameterNode p : graph.getNodes(ParameterNode.TYPE)) {
             if (p == param) {
                 return true;
             }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/inlining/walker/ComputeInliningRelevance.java	Mon Feb 16 17:47:43 2015 +0100
@@ -75,7 +75,7 @@
             Map<LoopBeginNode, Scope> loops = Node.newIdentityMap(EXPECTED_LOOP_COUNT);
 
             loops.put(null, new Scope(graph.start(), null));
-            for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.class)) {
+            for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.TYPE)) {
                 createLoopScope(loopBegin, loops);
             }
 
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/graph/ScopedPostOrderNodeIterator.java	Mon Feb 16 17:47:43 2015 +0100
@@ -108,7 +108,7 @@
     protected Deque<FixedNode> getScopes(StructuredGraph graph) {
         Deque<FixedNode> result = new ArrayDeque<>();
         result.push(graph.start());
-        for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.class)) {
+        for (LoopBeginNode loopBegin : graph.getNodes(LoopBeginNode.TYPE)) {
             result.push(loopBegin);
         }
         return result;
--- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/verify/VerifyDebugUsage.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 
     @Override
     protected boolean verify(StructuredGraph graph, PhaseContext context) {
-        for (MethodCallTargetNode t : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode t : graph.getNodes(MethodCallTargetNode.TYPE)) {
             ResolvedJavaMethod callee = t.targetMethod();
             ResolvedJavaType debugType = context.getMetaAccess().lookupJavaType(Debug.class);
             if (callee.getDeclaringClass().equals(debugType)) {
--- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/BinaryGraphPrinter.java	Mon Feb 16 17:47:43 2015 +0100
@@ -294,7 +294,7 @@
             writeString(type.toJavaName());
             writeByte(KLASS);
         } else if (object instanceof NodeClass) {
-            NodeClass nodeClass = (NodeClass) object;
+            NodeClass<?> nodeClass = (NodeClass<?>) object;
             writeByte(POOL_NODE_CLASS);
             writeString(nodeClass.getJavaClass().getSimpleName());
             writeString(nodeClass.getNameTemplate());
@@ -330,7 +330,7 @@
         }
     }
 
-    private void writeEdgesInfo(NodeClass nodeClass, Edges.Type type) throws IOException {
+    private void writeEdgesInfo(NodeClass<?> nodeClass, Edges.Type type) throws IOException {
         Edges edges = nodeClass.getEdges(type);
         writeShort((char) edges.getCount());
         for (int i = 0; i < edges.getCount(); i++) {
@@ -412,7 +412,7 @@
         writeInt(graph.getNodeCount());
 
         for (Node node : graph.getNodes()) {
-            NodeClass nodeClass = node.getNodeClass();
+            NodeClass<?> nodeClass = node.getNodeClass();
             node.getDebugProperties(props);
             if (probabilities != null && node instanceof FixedNode) {
                 try {
@@ -439,7 +439,7 @@
     }
 
     private void writeEdges(Node node, Edges.Type type) throws IOException {
-        NodeClass nodeClass = node.getNodeClass();
+        NodeClass<?> nodeClass = node.getNodeClass();
         Edges edges = nodeClass.getEdges(type);
         for (int i = 0; i < edges.getDirectCount(); i++) {
             writeNodeRef(edges.getNode(node, i));
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountLeadingZerosNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public final class AMD64CountLeadingZerosNode extends UnaryNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(AMD64CountLeadingZerosNode.class);
+    public static final NodeClass<AMD64CountLeadingZerosNode> TYPE = NodeClass.get(AMD64CountLeadingZerosNode.class);
 
     public AMD64CountLeadingZerosNode(ValueNode value) {
         super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64CountTrailingZerosNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
  */
 @NodeInfo
 public final class AMD64CountTrailingZerosNode extends UnaryNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(AMD64CountTrailingZerosNode.class);
+    public static final NodeClass<AMD64CountTrailingZerosNode> TYPE = NodeClass.get(AMD64CountTrailingZerosNode.class);
 
     public AMD64CountTrailingZerosNode(ValueNode value) {
         super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
--- a/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.amd64/src/com/oracle/graal/replacements/amd64/AMD64FloatConvertNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public final class AMD64FloatConvertNode extends UnaryArithmeticNode<FloatConvertOp> implements ArithmeticLIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(AMD64FloatConvertNode.class);
+    public static final NodeClass<AMD64FloatConvertNode> TYPE = NodeClass.get(AMD64FloatConvertNode.class);
 
     protected final FloatConvert op;
 
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/ArraysSubstitutionsTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -335,7 +335,7 @@
         new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
 
-        Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 0);
+        Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
     }
 
     public static final int[] constantArray3 = new int[]{1, 2, 3};
@@ -351,7 +351,7 @@
         new InliningPhase(new CanonicalizerPhase(true)).apply(graph, context);
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
 
-        Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 1);
+        Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
     }
 
     public static boolean testCanonicalEqualSnippet() {
@@ -367,7 +367,7 @@
         new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context);
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
 
-        Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 1);
+        Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 1);
     }
 
     public static boolean testVirtualEqualSnippet() {
@@ -385,7 +385,7 @@
         new PartialEscapePhase(false, new CanonicalizerPhase(false)).apply(graph, context);
         new CanonicalizerPhase(true).apply(graph, new PhaseContext(getProviders()));
 
-        Assert.assertTrue(graph.getNodes(ReturnNode.class).first().result().asJavaConstant().asLong() == 0);
+        Assert.assertTrue(graph.getNodes(ReturnNode.TYPE).first().result().asJavaConstant().asLong() == 0);
     }
 
     public static boolean testVirtualNotEqualSnippet(int x) {
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/BitOpNodesTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -253,12 +253,12 @@
         canonicalizer.apply(graph, context);
         new InliningPhase(canonicalizer).apply(graph, context);
         canonicalizer.apply(graph, context);
-        Assert.assertEquals(1, graph.getNodes(ReturnNode.class).count());
+        Assert.assertEquals(1, graph.getNodes(ReturnNode.TYPE).count());
         if (expectedClass != null) {
             if (graph.getNodes().filter(expectedClass).count() == 0) {
                 return null;
             }
         }
-        return graph.getNodes(ReturnNode.class).first().result();
+        return graph.getNodes(ReturnNode.TYPE).first().result();
     }
 }
--- a/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements.test/src/com/oracle/graal/replacements/test/EdgesTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -45,7 +45,7 @@
 
     @NodeInfo
     static final class TestNode extends Node {
-        public static final NodeClass TYPE = NodeClass.get(TestNode.class);
+        public static final NodeClass<TestNode> TYPE = NodeClass.get(TestNode.class);
         @Input NodeInputList<ValueNode> itail;
         @Input ConstantNode i1;
         @Input FloatingNode i2;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -64,7 +64,7 @@
     @Override
     protected void run(StructuredGraph graph) {
         ArrayList<Node> cleanUpReturnList = new ArrayList<>();
-        for (MethodCallTargetNode node : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode node : graph.getNodes(MethodCallTargetNode.TYPE)) {
             tryIntrinsify(node, cleanUpReturnList);
         }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/NodeIntrinsificationVerificationPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -43,7 +43,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (MethodCallTargetNode n : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode n : graph.getNodes(MethodCallTargetNode.TYPE)) {
             checkInvoke(n);
         }
     }
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java	Mon Feb 16 17:47:43 2015 +0100
@@ -679,7 +679,7 @@
             final StructuredGraph graph = buildInitialGraph(methodToParse);
             try (Scope s = Debug.scope("buildGraph", graph)) {
                 Set<MethodCallTargetNode> doNotInline = null;
-                for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.class)) {
+                for (MethodCallTargetNode callTarget : graph.getNodes(MethodCallTargetNode.TYPE)) {
                     if (doNotInline != null && doNotInline.contains(callTarget)) {
                         continue;
                     }
@@ -735,7 +735,7 @@
 
                 afterInlining(graph);
 
-                for (LoopEndNode end : graph.getNodes(LoopEndNode.class)) {
+                for (LoopEndNode end : graph.getNodes(LoopEndNode.TYPE)) {
                     end.disableSafepoint();
                 }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Feb 16 17:47:43 2015 +0100
@@ -395,7 +395,7 @@
     @NodeInfo
     static final class VarargsPlaceholderNode extends FloatingNode implements ArrayLengthProvider {
 
-        public static final NodeClass TYPE = NodeClass.get(VarargsPlaceholderNode.class);
+        public static final NodeClass<VarargsPlaceholderNode> TYPE = NodeClass.get(VarargsPlaceholderNode.class);
         protected final Varargs varargs;
 
         public VarargsPlaceholderNode(Varargs varargs, MetaAccessProvider metaAccess) {
@@ -738,7 +738,7 @@
         } else {
             snippetCopy.addAfterFixed(snippetCopy.start(), memoryAnchor);
         }
-        List<ReturnNode> returnNodes = snippet.getNodes(ReturnNode.class).snapshot();
+        List<ReturnNode> returnNodes = snippet.getNodes(ReturnNode.TYPE).snapshot();
         if (returnNodes.isEmpty()) {
             this.returnNode = null;
         } else if (returnNodes.size() == 1) {
@@ -1221,7 +1221,7 @@
             Node stampDup = duplicates.get(stampNode);
             ((ValueNode) stampDup).setStamp(replacee.stamp());
         }
-        for (ParameterNode paramNode : snippet.getNodes(ParameterNode.class)) {
+        for (ParameterNode paramNode : snippet.getNodes(ParameterNode.TYPE)) {
             for (Node usage : paramNode.usages()) {
                 Node usageDup = duplicates.get(usage);
                 propagateStamp(usageDup);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ArrayEqualsNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class ArrayEqualsNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable, Virtualizable, MemoryAccess {
 
-    public static final NodeClass TYPE = NodeClass.get(ArrayEqualsNode.class);
+    public static final NodeClass<ArrayEqualsNode> TYPE = NodeClass.get(ArrayEqualsNode.class);
     /** {@link Kind} of the arrays to compare. */
     protected final Kind kind;
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/AssertionNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class AssertionNode extends FixedWithNextNode implements Lowerable, Canonicalizable, LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(AssertionNode.class);
+    public static final NodeClass<AssertionNode> TYPE = NodeClass.get(AssertionNode.class);
     @Input ValueNode value;
 
     protected final boolean compileTimeAssertion;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicArrayCopyNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -34,9 +34,9 @@
 @NodeInfo
 public abstract class BasicArrayCopyNode extends MacroStateSplitNode implements Virtualizable {
 
-    public static final NodeClass TYPE = NodeClass.get(BasicArrayCopyNode.class);
+    public static final NodeClass<BasicArrayCopyNode> TYPE = NodeClass.get(BasicArrayCopyNode.class);
 
-    public BasicArrayCopyNode(NodeClass c, Invoke invoke) {
+    public BasicArrayCopyNode(NodeClass<?> c, Invoke invoke) {
         super(c, invoke);
     }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BasicObjectCloneNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,9 +38,9 @@
 @NodeInfo
 public abstract class BasicObjectCloneNode extends MacroStateSplitNode implements VirtualizableAllocation, ArrayLengthProvider {
 
-    public static final NodeClass TYPE = NodeClass.get(BasicObjectCloneNode.class);
+    public static final NodeClass<BasicObjectCloneNode> TYPE = NodeClass.get(BasicObjectCloneNode.class);
 
-    protected BasicObjectCloneNode(NodeClass c, Invoke invoke) {
+    protected BasicObjectCloneNode(NodeClass<?> c, Invoke invoke) {
         super(c, invoke);
     }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitCountNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class BitCountNode extends UnaryNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BitCountNode.class);
+    public static final NodeClass<BitCountNode> TYPE = NodeClass.get(BitCountNode.class);
 
     public BitCountNode(ValueNode value) {
         super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanForwardNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class BitScanForwardNode extends UnaryNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BitScanForwardNode.class);
+    public static final NodeClass<BitScanForwardNode> TYPE = NodeClass.get(BitScanForwardNode.class);
 
     public BitScanForwardNode(ValueNode value) {
         super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/BitScanReverseNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class BitScanReverseNode extends UnaryNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(BitScanReverseNode.class);
+    public static final NodeClass<BitScanReverseNode> TYPE = NodeClass.get(BitScanReverseNode.class);
 
     public BitScanReverseNode(ValueNode value) {
         super(TYPE, StampFactory.forInteger(Kind.Int, 0, ((PrimitiveStamp) value.stamp()).getBits()), value);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DeferredPiNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -40,7 +40,7 @@
  */
 @NodeInfo
 public final class DeferredPiNode extends FloatingNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(DeferredPiNode.class);
+    public static final NodeClass<DeferredPiNode> TYPE = NodeClass.get(DeferredPiNode.class);
 
     @Input ValueNode object;
     @Input ValueNode type;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectObjectStoreNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class DirectObjectStoreNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DirectObjectStoreNode.class);
+    public static final NodeClass<DirectObjectStoreNode> TYPE = NodeClass.get(DirectObjectStoreNode.class);
     @Input ValueNode object;
     @Input ValueNode value;
     @Input ValueNode offset;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectReadNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class DirectReadNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DirectReadNode.class);
+    public static final NodeClass<DirectReadNode> TYPE = NodeClass.get(DirectReadNode.class);
     @Input protected ValueNode address;
     protected final Kind readKind;
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/DirectStoreNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class DirectStoreNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(DirectStoreNode.class);
+    public static final NodeClass<DirectStoreNode> TYPE = NodeClass.get(DirectStoreNode.class);
     @Input protected ValueNode address;
     @Input protected ValueNode value;
     protected final Kind kind;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ExplodeLoopNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class ExplodeLoopNode extends FixedWithNextNode {
-    public static final NodeClass TYPE = NodeClass.get(ExplodeLoopNode.class);
+    public static final NodeClass<ExplodeLoopNode> TYPE = NodeClass.get(ExplodeLoopNode.class);
 
     public ExplodeLoopNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/LoadSnippetVarargParameterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class LoadSnippetVarargParameterNode extends FixedWithNextNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(LoadSnippetVarargParameterNode.class);
+    public static final NodeClass<LoadSnippetVarargParameterNode> TYPE = NodeClass.get(LoadSnippetVarargParameterNode.class);
     @Input ValueNode index;
 
     @Input NodeInputList<ParameterNode> parameters;
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -59,7 +59,7 @@
 @NodeInfo
 public abstract class MacroNode extends FixedWithNextNode implements Lowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(MacroNode.class);
+    public static final NodeClass<MacroNode> TYPE = NodeClass.get(MacroNode.class);
     @Input protected NodeInputList<ValueNode> arguments;
 
     protected final int bci;
@@ -67,7 +67,7 @@
     protected final JavaType returnType;
     protected final InvokeKind invokeKind;
 
-    protected MacroNode(NodeClass c, Invoke invoke) {
+    protected MacroNode(NodeClass<?> c, Invoke invoke) {
         super(c, StampFactory.forKind(((MethodCallTargetNode) invoke.callTarget()).targetMethod().getSignature().getReturnKind()));
         MethodCallTargetNode methodCallTarget = (MethodCallTargetNode) invoke.callTarget();
         this.arguments = new NodeInputList<>(this, methodCallTarget.arguments());
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MacroStateSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,10 +38,10 @@
 @NodeInfo
 public abstract class MacroStateSplitNode extends MacroNode implements StateSplit, MemoryCheckpoint.Single {
 
-    public static final NodeClass TYPE = NodeClass.get(MacroStateSplitNode.class);
+    public static final NodeClass<MacroStateSplitNode> TYPE = NodeClass.get(MacroStateSplitNode.class);
     @OptionalInput(InputType.State) protected FrameState stateAfter;
 
-    public MacroStateSplitNode(NodeClass c, Invoke invoke) {
+    public MacroStateSplitNode(NodeClass<?> c, Invoke invoke) {
         super(c, invoke);
         this.stateAfter = invoke.stateAfter();
     }
@@ -66,7 +66,7 @@
     }
 
     protected void replaceSnippetInvokes(StructuredGraph snippetGraph) {
-        for (MethodCallTargetNode call : snippetGraph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode call : snippetGraph.getNodes(MethodCallTargetNode.TYPE)) {
             Invoke invoke = call.invoke();
             if (!call.targetMethod().equals(getTargetMethod())) {
                 throw new GraalInternalError("unexpected invoke %s in snippet", getClass().getSimpleName());
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathIntrinsicNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo
 public final class MathIntrinsicNode extends UnaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(MathIntrinsicNode.class);
+    public static final NodeClass<MathIntrinsicNode> TYPE = NodeClass.get(MathIntrinsicNode.class);
     protected final Operation operation;
 
     public enum Operation {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MathPowNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public final class MathPowNode extends MacroStateSplitNode implements Canonicalizable.Binary<ValueNode> {
 
-    public static final NodeClass TYPE = NodeClass.get(MathPowNode.class);
+    public static final NodeClass<MathPowNode> TYPE = NodeClass.get(MathPowNode.class);
 
     public MathPowNode(Invoke i) {
         super(TYPE, i);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/MemoryAnchorNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(allowedUsageTypes = {InputType.Memory})
 public final class MemoryAnchorNode extends FixedWithNextNode implements LIRLowerable, MemoryNode, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(MemoryAnchorNode.class);
+    public static final NodeClass<MemoryAnchorNode> TYPE = NodeClass.get(MemoryAnchorNode.class);
 
     public MemoryAnchorNode() {
         super(TYPE, StampFactory.forVoid());
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/PureFunctionMacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,9 +35,9 @@
 @NodeInfo
 public abstract class PureFunctionMacroNode extends MacroStateSplitNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(PureFunctionMacroNode.class);
+    public static final NodeClass<PureFunctionMacroNode> TYPE = NodeClass.get(PureFunctionMacroNode.class);
 
-    protected PureFunctionMacroNode(NodeClass c, Invoke invoke) {
+    protected PureFunctionMacroNode(NodeClass<?> c, Invoke invoke) {
         super(c, invoke);
     }
 
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReadRegisterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(nameTemplate = "ReadRegister %{p#register}")
 public final class ReadRegisterNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ReadRegisterNode.class);
+    public static final NodeClass<ReadRegisterNode> TYPE = NodeClass.get(ReadRegisterNode.class);
     /**
      * The fixed register to access.
      */
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/ReverseBytesNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class ReverseBytesNode extends UnaryNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(ReverseBytesNode.class);
+    public static final NodeClass<ReverseBytesNode> TYPE = NodeClass.get(ReverseBytesNode.class);
 
     public ReverseBytesNode(ValueNode value) {
         super(TYPE, StampFactory.forKind(value.getKind()), value);
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/nodes/WriteRegisterNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
 @NodeInfo(nameTemplate = "WriteRegister %{p#register}")
 public final class WriteRegisterNode extends FixedWithNextNode implements LIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(WriteRegisterNode.class);
+    public static final NodeClass<WriteRegisterNode> TYPE = NodeClass.get(WriteRegisterNode.class);
     /**
      * The fixed register to access.
      */
--- a/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle.test/src/com/oracle/graal/truffle/test/PartialEvaluationTest.java	Mon Feb 16 17:47:43 2015 +0100
@@ -77,7 +77,7 @@
         final OptimizedCallTarget compilable = (OptimizedCallTarget) Truffle.getRuntime().createCallTarget(root);
         StructuredGraph actual = partialEval(compilable, arguments, AllowAssumptions.YES);
         removeFrameStates(actual);
-        for (MethodCallTargetNode node : actual.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode node : actual.getNodes(MethodCallTargetNode.TYPE)) {
             Assert.fail("Found invalid method call target node: " + node);
         }
     }
@@ -96,7 +96,7 @@
     }
 
     protected void removeFrameStates(StructuredGraph graph) {
-        for (FrameState frameState : graph.getNodes(FrameState.class)) {
+        for (FrameState frameState : graph.getNodes(FrameState.TYPE)) {
             frameState.replaceAtUsages(null);
             frameState.safeDelete();
         }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluator.java	Mon Feb 16 17:47:43 2015 +0100
@@ -261,7 +261,7 @@
         System.out.println("# ms: " + (System.currentTimeMillis() - ms));
         Debug.dump(graph, "After FastPE");
 
-        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE)) {
             Class<? extends FixedWithNextNode> macroSubstitution = providers.getReplacements().getMacroSubstitution(methodCallTargetNode.targetMethod());
             if (macroSubstitution != null) {
                 InliningUtil.inlineMacroNode(methodCallTargetNode.invoke(), methodCallTargetNode.targetMethod(), macroSubstitution);
@@ -337,11 +337,11 @@
 
     private static void postPartialEvaluation(final StructuredGraph graph) {
         NeverPartOfCompilationNode.verifyNotFoundIn(graph);
-        for (MaterializeFrameNode materializeNode : graph.getNodes(MaterializeFrameNode.class).snapshot()) {
+        for (MaterializeFrameNode materializeNode : graph.getNodes(MaterializeFrameNode.TYPE).snapshot()) {
             materializeNode.replaceAtUsages(materializeNode.getFrame());
             graph.removeFixed(materializeNode);
         }
-        for (VirtualObjectNode virtualObjectNode : graph.getNodes(VirtualObjectNode.class)) {
+        for (VirtualObjectNode virtualObjectNode : graph.getNodes(VirtualObjectNode.TYPE)) {
             if (virtualObjectNode instanceof VirtualOnlyInstanceNode) {
                 VirtualOnlyInstanceNode virtualOnlyInstanceNode = (VirtualOnlyInstanceNode) virtualObjectNode;
                 virtualOnlyInstanceNode.setAllowMaterialization(true);
@@ -485,7 +485,7 @@
             assert graph.hasLoops() : graph + " does not contain a loop";
             final StructuredGraph graphCopy = graph.copy();
             final List<Node> modifiedNodes = new ArrayList<>();
-            for (ParameterNode param : graphCopy.getNodes(ParameterNode.class).snapshot()) {
+            for (ParameterNode param : graphCopy.getNodes(ParameterNode.TYPE).snapshot()) {
                 ValueNode arg = arguments.get(param.index());
                 if (arg.isConstant()) {
                     Constant constant = arg.asConstant();
@@ -532,7 +532,7 @@
     private void expandDirectCalls(StructuredGraph graph, TruffleExpansionLogger expansionLogger, TruffleInlining inlining, TruffleInliningCache inliningCache) {
         PhaseContext phaseContext = new PhaseContext(providers);
 
-        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class).snapshot()) {
+        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE).snapshot()) {
             StructuredGraph inlineGraph = parseDirectCallGraph(phaseContext, graph, inlining, inliningCache, methodCallTargetNode);
 
             if (inlineGraph != null) {
@@ -545,7 +545,7 @@
     }
 
     private boolean noDirectCallsLeft(StructuredGraph graph) {
-        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.class).snapshot()) {
+        for (MethodCallTargetNode methodCallTargetNode : graph.getNodes(MethodCallTargetNode.TYPE).snapshot()) {
             if (methodCallTargetNode.targetMethod().equals(callDirectMethod)) {
                 return false;
             }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCacheImpl.java	Mon Feb 16 17:47:43 2015 +0100
@@ -136,7 +136,7 @@
             lastUsed.put(key, counter++);
             cache.put(key, markerGraph);
 
-            for (ParameterNode param : graph.getNodes(ParameterNode.class)) {
+            for (ParameterNode param : graph.getNodes(ParameterNode.TYPE)) {
                 if (param.getKind() == Kind.Object) {
                     ValueNode actualArgument = arguments.get(param.index());
                     param.setStamp(param.stamp().join(actualArgument.stamp()));
@@ -164,7 +164,7 @@
                 canonicalizer.apply(graph, phaseContext);
 
                 boolean inliningProgress = false;
-                for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.class)) {
+                for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.TYPE)) {
                     if (!graph.getMark().equals(mark)) {
                         mark = lookupProcessMacroSubstitutions(graph, mark);
                     }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleCompilerImpl.java	Mon Feb 16 17:47:43 2015 +0100
@@ -132,7 +132,7 @@
 
             if (!TruffleCompilerOptions.TruffleInlineAcrossTruffleBoundary.getValue()) {
                 // Do not inline across Truffle boundaries.
-                for (MethodCallTargetNode mct : graph.getNodes(MethodCallTargetNode.class)) {
+                for (MethodCallTargetNode mct : graph.getNodes(MethodCallTargetNode.TYPE)) {
                     mct.invoke().setUseForInlining(false);
                 }
             }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/TruffleExpansionLogger.java	Mon Feb 16 17:47:43 2015 +0100
@@ -84,7 +84,7 @@
     }
 
     private void registerParentInCalls(ExpansionTree parentTree, StructuredGraph graph) {
-        for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode target : graph.getNodes(MethodCallTargetNode.TYPE)) {
             callToParentTree.put(target, parentTree);
         }
     }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/AssumptionNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class AssumptionNode extends MacroNode implements Simplifiable {
 
-    public static final NodeClass TYPE = NodeClass.get(AssumptionNode.class);
+    public static final NodeClass<AssumptionNode> TYPE = NodeClass.get(AssumptionNode.class);
 
     public AssumptionNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/BailoutNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class BailoutNode extends MacroNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(BailoutNode.class);
+    public static final NodeClass<BailoutNode> TYPE = NodeClass.get(BailoutNode.class);
 
     public BailoutNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/IsCompilationConstantNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class IsCompilationConstantNode extends MacroStateSplitNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(IsCompilationConstantNode.class);
+    public static final NodeClass<IsCompilationConstantNode> TYPE = NodeClass.get(IsCompilationConstantNode.class);
 
     public IsCompilationConstantNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class IntegerAddExactNode extends AddNode implements IntegerExactArithmeticNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerAddExactNode.class);
+    public static final NodeClass<IntegerAddExactNode> TYPE = NodeClass.get(IntegerAddExactNode.class);
 
     public IntegerAddExactNode(ValueNode x, ValueNode y) {
         super(TYPE, x, y);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerAddExactSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo
 public final class IntegerAddExactSplitNode extends IntegerExactArithmeticSplitNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerAddExactSplitNode.class);
+    public static final NodeClass<IntegerAddExactSplitNode> TYPE = NodeClass.get(IntegerAddExactSplitNode.class);
 
     public IntegerAddExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) {
         super(TYPE, stamp, x, y, next, overflowSuccessor);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerExactArithmeticSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -32,14 +32,14 @@
 
 @NodeInfo
 public abstract class IntegerExactArithmeticSplitNode extends ControlSplitNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerExactArithmeticSplitNode.class);
+    public static final NodeClass<IntegerExactArithmeticSplitNode> TYPE = NodeClass.get(IntegerExactArithmeticSplitNode.class);
 
     @Successor AbstractBeginNode overflowSuccessor;
     @Successor AbstractBeginNode next;
     @Input ValueNode x;
     @Input ValueNode y;
 
-    protected IntegerExactArithmeticSplitNode(NodeClass c, Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) {
+    protected IntegerExactArithmeticSplitNode(NodeClass<?> c, Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) {
         super(c, stamp);
         this.x = x;
         this.y = y;
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class IntegerMulExactNode extends MulNode implements IntegerExactArithmeticNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerMulExactNode.class);
+    public static final NodeClass<IntegerMulExactNode> TYPE = NodeClass.get(IntegerMulExactNode.class);
 
     public IntegerMulExactNode(ValueNode x, ValueNode y) {
         super(TYPE, x, y);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulExactSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo
 public final class IntegerMulExactSplitNode extends IntegerExactArithmeticSplitNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerMulExactSplitNode.class);
+    public static final NodeClass<IntegerMulExactSplitNode> TYPE = NodeClass.get(IntegerMulExactSplitNode.class);
 
     public IntegerMulExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) {
         super(TYPE, stamp, x, y, next, overflowSuccessor);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerMulHighNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 
 @NodeInfo(shortName = "*H")
 public final class IntegerMulHighNode extends BinaryNode implements ArithmeticLIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(IntegerMulHighNode.class);
+    public static final NodeClass<IntegerMulHighNode> TYPE = NodeClass.get(IntegerMulHighNode.class);
 
     public IntegerMulHighNode(ValueNode x, ValueNode y) {
         this((IntegerStamp) x.stamp().unrestricted(), x, y);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
  */
 @NodeInfo
 public final class IntegerSubExactNode extends SubNode implements IntegerExactArithmeticNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerSubExactNode.class);
+    public static final NodeClass<IntegerSubExactNode> TYPE = NodeClass.get(IntegerSubExactNode.class);
 
     public IntegerSubExactNode(ValueNode x, ValueNode y) {
         super(TYPE, x, y);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/IntegerSubExactSplitNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 
 @NodeInfo
 public final class IntegerSubExactSplitNode extends IntegerExactArithmeticSplitNode {
-    public static final NodeClass TYPE = NodeClass.get(IntegerSubExactSplitNode.class);
+    public static final NodeClass<IntegerSubExactSplitNode> TYPE = NodeClass.get(IntegerSubExactSplitNode.class);
 
     public IntegerSubExactSplitNode(Stamp stamp, ValueNode x, ValueNode y, AbstractBeginNode next, AbstractBeginNode overflowSuccessor) {
         super(TYPE, stamp, x, y, next, overflowSuccessor);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/arithmetic/UnsignedMulHighNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo(shortName = "|*H|")
 public final class UnsignedMulHighNode extends BinaryNode implements ArithmeticLIRLowerable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsignedMulHighNode.class);
+    public static final NodeClass<UnsignedMulHighNode> TYPE = NodeClass.get(UnsignedMulHighNode.class);
 
     public UnsignedMulHighNode(ValueNode x, ValueNode y) {
         this((IntegerStamp) x.stamp().unrestricted(), x, y);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/CompilationConstantNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 @NodeInfo
 public final class CompilationConstantNode extends NeverPartOfCompilationNode implements Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(CompilationConstantNode.class);
+    public static final NodeClass<CompilationConstantNode> TYPE = NodeClass.get(CompilationConstantNode.class);
 
     public CompilationConstantNode(Invoke invoke) {
         super(TYPE, invoke, "The value could not be reduced to a compile time constant.");
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverInlineMacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,7 +31,7 @@
 @NodeInfo
 public final class NeverInlineMacroNode extends MacroStateSplitNode implements com.oracle.graal.graph.IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(NeverInlineMacroNode.class);
+    public static final NodeClass<NeverInlineMacroNode> TYPE = NodeClass.get(NeverInlineMacroNode.class);
 
     public NeverInlineMacroNode(Invoke invoke) {
         super(TYPE, invoke);
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/asserts/NeverPartOfCompilationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -31,14 +31,14 @@
 @NodeInfo
 public class NeverPartOfCompilationNode extends MacroStateSplitNode implements IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(NeverPartOfCompilationNode.class);
+    public static final NodeClass<NeverPartOfCompilationNode> TYPE = NodeClass.get(NeverPartOfCompilationNode.class);
     protected final String message;
 
     public NeverPartOfCompilationNode(Invoke invoke) {
         this(TYPE, invoke, "This code path should never be part of a compilation.");
     }
 
-    protected NeverPartOfCompilationNode(NodeClass c, Invoke invoke, String message) {
+    protected NeverPartOfCompilationNode(NodeClass<?> c, Invoke invoke, String message) {
         super(c, invoke);
         this.message = message;
     }
@@ -48,7 +48,7 @@
     }
 
     public static void verifyNotFoundIn(final StructuredGraph graph) {
-        for (NeverPartOfCompilationNode neverPartOfCompilationNode : graph.getNodes(NeverPartOfCompilationNode.class)) {
+        for (NeverPartOfCompilationNode neverPartOfCompilationNode : graph.getNodes(NeverPartOfCompilationNode.TYPE)) {
             Throwable exception = new VerificationError(neverPartOfCompilationNode.getMessage());
             throw GraphUtil.approxSourceException(neverPartOfCompilationNode, exception);
         }
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/ForceMaterializeNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -30,7 +30,7 @@
 
 @NodeInfo
 public final class ForceMaterializeNode extends FixedWithNextNode implements LIRLowerable {
-    public static final NodeClass TYPE = NodeClass.get(ForceMaterializeNode.class);
+    public static final NodeClass<ForceMaterializeNode> TYPE = NodeClass.get(ForceMaterializeNode.class);
 
     @Input ValueNode object;
 
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/MaterializeFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo(nameTemplate = "MaterializeFrame{p#frame/s}")
 public final class MaterializeFrameNode extends FixedWithNextNode implements IterableNodeType {
 
-    public static final NodeClass TYPE = NodeClass.get(MaterializeFrameNode.class);
+    public static final NodeClass<MaterializeFrameNode> TYPE = NodeClass.get(MaterializeFrameNode.class);
     @Input ValueNode frame;
 
     public MaterializeFrameNode(ValueNode frame) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/frame/NewFrameNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -48,7 +48,7 @@
 @NodeInfo
 public final class NewFrameNode extends FixedWithNextNode implements IterableNodeType, VirtualizableAllocation, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(NewFrameNode.class);
+    public static final NodeClass<NewFrameNode> TYPE = NodeClass.get(NewFrameNode.class);
     @Input ValueNode descriptor;
     @Input ValueNode arguments;
 
@@ -99,7 +99,7 @@
     @NodeInfo
     public static final class VirtualOnlyInstanceNode extends VirtualInstanceNode {
 
-        public static final NodeClass TYPE = NodeClass.get(VirtualOnlyInstanceNode.class);
+        public static final NodeClass<VirtualOnlyInstanceNode> TYPE = NodeClass.get(VirtualOnlyInstanceNode.class);
         protected boolean allowMaterialization;
 
         public VirtualOnlyInstanceNode(ResolvedJavaType type, ResolvedJavaField[] fields) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeLoadMacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
  */
 @NodeInfo
 public final class CustomizedUnsafeLoadMacroNode extends NeverPartOfCompilationNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(CustomizedUnsafeLoadMacroNode.class);
+    public static final NodeClass<CustomizedUnsafeLoadMacroNode> TYPE = NodeClass.get(CustomizedUnsafeLoadMacroNode.class);
 
     private static final int ARGUMENT_COUNT = 4;
     private static final int OBJECT_ARGUMENT_INDEX = 0;
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/CustomizedUnsafeStoreMacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -36,7 +36,7 @@
  */
 @NodeInfo
 public final class CustomizedUnsafeStoreMacroNode extends NeverPartOfCompilationNode implements Canonicalizable, StateSplit {
-    public static final NodeClass TYPE = NodeClass.get(CustomizedUnsafeStoreMacroNode.class);
+    public static final NodeClass<CustomizedUnsafeStoreMacroNode> TYPE = NodeClass.get(CustomizedUnsafeStoreMacroNode.class);
     private static final int ARGUMENT_COUNT = 4;
     private static final int OBJECT_ARGUMENT_INDEX = 0;
     private static final int OFFSET_ARGUMENT_INDEX = 1;
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/nodes/typesystem/UnsafeTypeCastMacroNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -39,7 +39,7 @@
 @NodeInfo
 public final class UnsafeTypeCastMacroNode extends NeverPartOfCompilationNode implements Simplifiable {
 
-    public static final NodeClass TYPE = NodeClass.get(UnsafeTypeCastMacroNode.class);
+    public static final NodeClass<UnsafeTypeCastMacroNode> TYPE = NodeClass.get(UnsafeTypeCastMacroNode.class);
     private static final int OBJECT_ARGUMENT_INDEX = 0;
     private static final int CLASS_ARGUMENT_INDEX = 1;
     private static final int CONDITION_ARGUMENT_INDEX = 2;
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/ReplaceIntrinsicsPhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -43,7 +43,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.class)) {
+        for (MethodCallTargetNode methodCallTarget : graph.getNodes(MethodCallTargetNode.TYPE)) {
             if (methodCallTarget.isAlive()) {
                 InvokeKind invokeKind = methodCallTarget.invokeKind();
                 if (invokeKind.isDirect()) {
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/phases/VerifyFrameDoesNotEscapePhase.java	Mon Feb 16 17:47:43 2015 +0100
@@ -37,7 +37,7 @@
 
     @Override
     protected void run(StructuredGraph graph) {
-        for (NewFrameNode virtualFrame : graph.getNodes(NewFrameNode.class)) {
+        for (NewFrameNode virtualFrame : graph.getNodes(NewFrameNode.TYPE)) {
             for (MethodCallTargetNode callTarget : virtualFrame.usages().filter(MethodCallTargetNode.class)) {
                 if (callTarget.invoke() != null) {
                     String properties = callTarget.getDebugProperties().toString();
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/MaterializedObjectState.java	Mon Feb 16 17:47:43 2015 +0100
@@ -33,7 +33,7 @@
 @NodeInfo
 public final class MaterializedObjectState extends EscapeObjectState implements Node.ValueNumberable {
 
-    public static final NodeClass TYPE = NodeClass.get(MaterializedObjectState.class);
+    public static final NodeClass<MaterializedObjectState> TYPE = NodeClass.get(MaterializedObjectState.class);
     @Input ValueNode materializedValue;
 
     public ValueNode materializedValue() {
--- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/nodes/VirtualObjectState.java	Mon Feb 16 17:47:43 2015 +0100
@@ -35,7 +35,7 @@
 @NodeInfo
 public final class VirtualObjectState extends EscapeObjectState implements Node.ValueNumberable {
 
-    public static final NodeClass TYPE = NodeClass.get(VirtualObjectState.class);
+    public static final NodeClass<VirtualObjectState> TYPE = NodeClass.get(VirtualObjectState.class);
     @Input NodeInputList<ValueNode> values;
 
     public NodeInputList<ValueNode> values() {
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/SnippetLocationNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -45,7 +45,7 @@
  */
 @NodeInfo
 public final class SnippetLocationNode extends LocationNode implements Canonicalizable {
-    public static final NodeClass TYPE = NodeClass.get(SnippetLocationNode.class);
+    public static final NodeClass<SnippetLocationNode> TYPE = NodeClass.get(SnippetLocationNode.class);
 
     protected final SnippetReflectionProvider snippetReflection;
 
--- a/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java	Mon Feb 16 17:25:43 2015 +0100
+++ b/graal/com.oracle.graal.word/src/com/oracle/graal/word/nodes/WordCastNode.java	Mon Feb 16 17:47:43 2015 +0100
@@ -38,7 +38,7 @@
 @NodeInfo
 public final class WordCastNode extends FixedWithNextNode implements LIRLowerable, Canonicalizable {
 
-    public static final NodeClass TYPE = NodeClass.get(WordCastNode.class);
+    public static final NodeClass<WordCastNode> TYPE = NodeClass.get(WordCastNode.class);
     @Input ValueNode input;
 
     public static WordCastNode wordToObject(ValueNode input, Kind wordKind) {