class BranchPair {

    @Override
    public boolean equals(Object obj) {
        if(obj == null){
            return false;
        }

        if(obj instanceof BranchPair){
            BranchPair otherBranchPair = (BranchPair) obj;

            if(otherBranchPair.getFirstBranch() == null){
                if(this.firstBranch != null){
                    return false;
                }
            }else{
                if(!otherBranchPair.getFirstBranch().equals(this.firstBranch)){
                    return false;
                }
            }


            if(otherBranchPair.getSecondBranch() == null){
                if(this.secondBranch != null){
                    return false;
                }
            }else {
                if(!otherBranchPair.getSecondBranch().equals(this.secondBranch)){
                    return false;
                }
            }
            return true;
        }

        return false;
    }

    public  BranchPair(Branch firstBranch,Branch secondBranch, BytecodeInstruction callSite);
    public  BranchPair(Branch firstBranch,Branch secondBranch, BytecodeInstruction callSite, boolean expression);

}