class JexlNodeSet implements Set<JexlNode> {

    @Override
    public boolean equals(Object o) {
        if (o == null)
            return false;
        
        // Check for the same memory address.
        if (this == o)
            return true;
        
        if (o instanceof JexlNodeSet) {
            JexlNodeSet other = (JexlNodeSet) o;
            
            // Size first.
            if (this.size() != other.size())
                return false;
            
            // Node keys second.
            return this.nodeMap.keySet().equals(other.nodeMap.keySet());
        }
        return false;
    }

    public  JexlNodeSet();
    public  JexlNodeSet(boolean useSourceNodeForKeys);

}