// Path: src/main/java/redress/abi/generic/visitors/AbstractStructureVisitor.java
// public abstract class AbstractStructureVisitor implements IVisitor{
// 
//     public boolean preVisit(){return true;}
//     public void postVisit(){}
//     public void visit(AbstractSegment in){}
//     public void visit(AbstractSection in){}
//     public void visit(AbstractLoadCommand in){}
//     public void visit(AbstractHeader in){}
//     public void visit(AbstractABI in){}
//     public void visit(AbstractText in){}
//     public void visit(AbstractTable in){}
// 
// 
// }
// 
// Path: src/main/java/redress/memory/address/AbstractAddress.java
// public abstract class AbstractAddress implements IContainer,Comparable<AbstractAddress> {
// 
//     protected final int BYTES;
//     protected final ByteOrder BYTEORDER;
//     protected final byte[] container;
// 
//     public AbstractAddress(int bytes){
//         this.BYTES = bytes;
//         this.BYTEORDER = ByteOrder.BIG_ENDIAN;
//         container = new byte[BYTES];
//     }
//     @Override
//     public void accept(AbstractContainerVisitor visitor) {
// 
//     }
//     @Override
//     public abstract AbstractAddress clone();
// 
//     @Override
//     public ByteOrder getByteOrder(){return BYTEORDER;}
// 
//     @Override
//     public byte[] getContainer(){return container;}
// 
//     @Override
//     public int compareTo(AbstractAddress o) {
//         if(o == null)
//             return 0;
// 
//         if(o.getIntValue() == this.getIntValue()){
//             return 0;
//         }
// 
//         if(o.getIntValue() > this.getIntValue()){
//             return -1;
//         }
// 
//         if(o.getIntValue() < this.getIntValue()){
//             return 1;
//         }
// 
//         return 0;
//     }
// 
//     public void add(IContainer in){
//         B.add(this,in);
//     }
// 
//     public void add(int i){
//         QWord w = new QWord(B.intToBytes(i,ByteOrder.BIG_ENDIAN), AbstractData.Type.DATA_NULL,ByteOrder.BIG_ENDIAN);
//         add(w);
//     }
// 
//     public void subtract(IContainer in){
//         B.subtract(this,in);
//     }
// 
//     public void subtract(int i){
//         QWord w = new QWord(B.intToBytes(i,ByteOrder.BIG_ENDIAN), AbstractData.Type.DATA_NULL,ByteOrder.BIG_ENDIAN);
//         subtract(w);
//     }
// 
//     public int getIntValue(){
//         return B.bytesToInt(container, BYTEORDER);
//     }
// 
//     public String getStringValue(){
//         return B.bytesToHexString(container);
//     }
// 
//     @Override
//     public boolean equals(Object o){
//         if(!(o instanceof IContainer))
//             return false;
//         return equals((IContainer) o, false);
//     }
// 
//     public boolean equals(IContainer o, boolean ignoreLength){
//         IContainer tmp;
//         if(this.BYTEORDER == o.getByteOrder()){
//             tmp = o;
//         }else{
//             tmp = o.flipByteOrder();
//         }
// 
//         if(ignoreLength){
//             if(this.BYTES <= tmp.getContainer().length){
//                 for(int i=0;i<this.BYTES;i++){
//                     if(this.container[i] != tmp.getContainer()[i])
//                         return false;
//                 }
//             }else{
//                 for(int i=0;i<tmp.getContainer().length;i++){
//                     if(this.container[i] != tmp.getContainer()[i])
//                         return false;
//                 }
//             }
//         }else{
//             if(this.BYTES != tmp.getContainer().length) {
//                 return false;
//             }
//             for(int i=0;i<this.BYTES;i++){
//                 if(this.container[i] != tmp.getContainer()[i])
//                     return false;
//             }
//         }
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = this.BYTES;
//         result = 31 * result + (this.BYTEORDER != null ? this.BYTEORDER.hashCode() : 0);
//         result = 31 * result + Arrays.hashCode(this.container);
//         return result;
//     }
// 
//     @Override
//     public IContainer getNextSibling() {
//         return null;
//     }
// 
//     @Override
//     public IContainer getPreviousSibling() {
//         return null;
//     }
// 
//     @Override
//     public IStructure getParent() {
//         return null;
//     }
// 
//     @Override
//     public String toString(){
//         return "0x"+getStringValue();
//     }
// 
// }


import redress.abi.generic.visitors.AbstractStructureVisitor;
import redress.memory.address.AbstractAddress;
import java.util.HashSet;
import java.util.LinkedList;
        visitor.postVisit();
        for(IStructure child : getChildren()){
            child.accept(visitor);
        }
    }

    @Override
    public void setLoader(ILoader loader){
        this.load = loader;
    }

    @Override
    public ILoader getLoader(){
        return this.load;
    }

    @Override
    public int compareTo(IAddressable o) {
        if(o == null)
            return 0;

        return this.beginAddress.compareTo(o.getBeginAddress());
    }

    @Override
    public IStructure getParent() {
        return parent;
    }

    @Override
// Path: src/main/java/redress/abi/generic/visitors/AbstractStructureVisitor.java
// public abstract class AbstractStructureVisitor implements IVisitor{
// 
//     public boolean preVisit(){return true;}
//     public void postVisit(){}
//     public void visit(AbstractSegment in){}
//     public void visit(AbstractSection in){}
//     public void visit(AbstractLoadCommand in){}
//     public void visit(AbstractHeader in){}
//     public void visit(AbstractABI in){}
//     public void visit(AbstractText in){}
//     public void visit(AbstractTable in){}
// 
// 
// }
// 
// Path: src/main/java/redress/memory/address/AbstractAddress.java
// public abstract class AbstractAddress implements IContainer,Comparable<AbstractAddress> {
// 
//     protected final int BYTES;
//     protected final ByteOrder BYTEORDER;
//     protected final byte[] container;
// 
//     public AbstractAddress(int bytes){
//         this.BYTES = bytes;
//         this.BYTEORDER = ByteOrder.BIG_ENDIAN;
//         container = new byte[BYTES];
//     }
//     @Override
//     public void accept(AbstractContainerVisitor visitor) {
// 
//     }
//     @Override
//     public abstract AbstractAddress clone();
// 
//     @Override
//     public ByteOrder getByteOrder(){return BYTEORDER;}
// 
//     @Override
//     public byte[] getContainer(){return container;}
// 
//     @Override
//     public int compareTo(AbstractAddress o) {
//         if(o == null)
//             return 0;
// 
//         if(o.getIntValue() == this.getIntValue()){
//             return 0;
//         }
// 
//         if(o.getIntValue() > this.getIntValue()){
//             return -1;
//         }
// 
//         if(o.getIntValue() < this.getIntValue()){
//             return 1;
//         }
// 
//         return 0;
//     }
// 
//     public void add(IContainer in){
//         B.add(this,in);
//     }
// 
//     public void add(int i){
//         QWord w = new QWord(B.intToBytes(i,ByteOrder.BIG_ENDIAN), AbstractData.Type.DATA_NULL,ByteOrder.BIG_ENDIAN);
//         add(w);
//     }
// 
//     public void subtract(IContainer in){
//         B.subtract(this,in);
//     }
// 
//     public void subtract(int i){
//         QWord w = new QWord(B.intToBytes(i,ByteOrder.BIG_ENDIAN), AbstractData.Type.DATA_NULL,ByteOrder.BIG_ENDIAN);
//         subtract(w);
//     }
// 
//     public int getIntValue(){
//         return B.bytesToInt(container, BYTEORDER);
//     }
// 
//     public String getStringValue(){
//         return B.bytesToHexString(container);
//     }
// 
//     @Override
//     public boolean equals(Object o){
//         if(!(o instanceof IContainer))
//             return false;
//         return equals((IContainer) o, false);
//     }
// 
//     public boolean equals(IContainer o, boolean ignoreLength){
//         IContainer tmp;
//         if(this.BYTEORDER == o.getByteOrder()){
//             tmp = o;
//         }else{
//             tmp = o.flipByteOrder();
//         }
// 
//         if(ignoreLength){
//             if(this.BYTES <= tmp.getContainer().length){
//                 for(int i=0;i<this.BYTES;i++){
//                     if(this.container[i] != tmp.getContainer()[i])
//                         return false;
//                 }
//             }else{
//                 for(int i=0;i<tmp.getContainer().length;i++){
//                     if(this.container[i] != tmp.getContainer()[i])
//                         return false;
//                 }
//             }
//         }else{
//             if(this.BYTES != tmp.getContainer().length) {
//                 return false;
//             }
//             for(int i=0;i<this.BYTES;i++){
//                 if(this.container[i] != tmp.getContainer()[i])
//                     return false;
//             }
//         }
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = this.BYTES;
//         result = 31 * result + (this.BYTEORDER != null ? this.BYTEORDER.hashCode() : 0);
//         result = 31 * result + Arrays.hashCode(this.container);
//         return result;
//     }
// 
//     @Override
//     public IContainer getNextSibling() {
//         return null;
//     }
// 
//     @Override
//     public IContainer getPreviousSibling() {
//         return null;
//     }
// 
//     @Override
//     public IStructure getParent() {
//         return null;
//     }
// 
//     @Override
//     public String toString(){
//         return "0x"+getStringValue();
//     }
// 
// }


// Path: src/main/java/redress/abi/generic/AbstractLoadCommand.java
import redress.abi.generic.visitors.AbstractStructureVisitor;
import redress.memory.address.AbstractAddress;
import java.util.HashSet;
import java.util.LinkedList;

        visitor.postVisit();
        for(IStructure child : getChildren()){
            child.accept(visitor);
        }
    }

    @Override
    public void setLoader(ILoader loader){
        this.load = loader;
    }

    @Override
    public ILoader getLoader(){
        return this.load;
    }

    @Override
    public int compareTo(IAddressable o) {
        if(o == null)
            return 0;

        return this.beginAddress.compareTo(o.getBeginAddress());
    }

    @Override
    public IStructure getParent() {
        return parent;
    }

    @Override
    public LinkedList<IStructure> getChildren() {