@Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;

        ModuleNode that = (ModuleNode) o;

        if (declaration != null ? !declaration.equals(that.declaration)
                : that.declaration != null)
            return false;
        if (ident != null ? !ident.equals(that.ident) : that.ident != null)
            return false;
        if (statementSequence != null ? !statementSequence
                .equals(that.statementSequence)
                : that.statementSequence != null)
            return false;

        return true;
    }