--- /dev/null
+package org.simantics.db.layer0.variable;\r
+\r
+public class VariableNode<Node> {\r
+ public final NodeSupport<Node> support;\r
+ public final Object node;\r
+ private int hash;\r
+ public VariableNode(NodeSupport<Node> support, Object node) {\r
+ assert(support != null);\r
+ this.support = support;\r
+ this.node = node;\r
+ }\r
+ \r
+ private int computeHash() {\r
+ return 31*support.hashCode() + 41*node.hashCode();\r
+ }\r
+\r
+ @Override\r
+ public int hashCode() {\r
+ if (hash == 0)\r
+ hash = computeHash();\r
+ return hash;\r
+ }\r
+ \r
+ @Override\r
+ public boolean equals(Object object) {\r
+ if (this == object)\r
+ return true;\r
+ else if (object == null)\r
+ return false;\r
+ else if (!(object instanceof VariableNode))\r
+ return false;\r
+ VariableNode<?> r = (VariableNode<?>)object;\r
+ if (r.hashCode() != hashCode())\r
+ return false;\r
+ return r.support.equals(support) && r.node.equals(node);\r
+ }\r
+ \r
+}\r