class BetaNode extends LeftTupleSource implements
        LeftTupleSinkNode,
        ObjectSinkNode,
        RightTupleSink,
        MemoryFactory {

    @Override
    public boolean equals(Object object) {
        if (this == object) {
            return true;
        }

        if ( object == null || !(object instanceof BetaNode) || this.hashCode() != object.hashCode() ) {
            return false;
        }

        BetaNode other = (BetaNode) object;
        return this.getClass() == other.getClass() &&
               this.constraints.equals( other.constraints ) &&
               this.rightInputIsPassive == other.rightInputIsPassive &&
               areNullSafeEquals(this.leftListenedProperties, other.leftListenedProperties) &&
               areNullSafeEquals(this.rightListenedProperties, other.rightListenedProperties) &&
               this.leftInput.getId() == other.leftInput.getId() &&
               this.rightInput.getId() == other.rightInput.getId();
    }

    public  BetaNode();
    protected  BetaNode(final int id,
             final LeftTupleSource leftInput,
             final ObjectSource rightInput,
             final BetaConstraints constraints,
             final BuildContext context);

}