// Path: src/main/java/redress/abi/generic/visitors/AbstractContainerVisitor.java
// public abstract class AbstractContainerVisitor implements IVisitor{
//     public boolean preVisit(){return true;}
//     public void postVisit(){}
//     public void visit(Word in){}
//     public void visit(DWord in){}
//     public void visit(QWord in){}
//     public void visit(Text in){}
//     public void visit(Range in){}
//     public void visit(Loader.char16 in){}
// }
// 
// Path: src/main/java/redress/memory/data/view/TableSeperator.java
// public class TableSeperator implements IContainer {
//     private final String addressCell,typeCell,codeCell,commentCell;
//     private Color color;
// 
//     public TableSeperator(String addressCell,String typeCell,String codeCell,String commentCell,Color color){
//         this.addressCell = addressCell;
//         this.typeCell=typeCell;
//         this.codeCell=codeCell;
//         this.commentCell=commentCell;
//         this.color=color;
//     }
// 
//     public TableSeperator(String addressCell,String typeCell,String codeCell,String commentCell){
//         this(addressCell,typeCell,codeCell,commentCell,Color.rgba());
//     }
// 
//     public String getAddressCell(){
//         return addressCell;
//     }
// 
//     public String gettypeCell(){
//         return typeCell;
//     }
// 
//     public String getcodeCell(){
//         return codeCell;
//     }
// 
//     public String getcommentCell(){
//         return commentCell;
//     }
// 
//     public Color getColor(){
//         return color;
//     }
// 
//     @Override
//     public byte[] getContainer() {
//         return new byte[0];
//     }
// 
//     @Override
//     public ByteOrder getByteOrder() {
//         return ByteOrder.BIG_ENDIAN;
//     }
// 
//     @Override
//     public IContainer getNextSibling() {
//         return null;
//     }
// 
//     @Override
//     public IContainer getPreviousSibling() {
//         return null;
//     }
// 
//     @Override
//     public IStructure getParent() {
//         return null;
//     }
// 
//     @Override
//     public IContainer flipByteOrder() {
//         return null;
//     }
// 
//     @Override
//     public IContainer clone() {
//         return null;
//     }
// 
//     @Override
//     public void add(IContainer i) {
// 
//     }
// 
//     @Override
//     public void add(int i) {
// 
//     }
// 
//     @Override
//     public void subtract(IContainer i) {
// 
//     }
// 
//     @Override
//     public void subtract(int i) {
// 
//     }
// 
//     @Override
//     public void accept(AbstractContainerVisitor visitor) {
// 
//     }
// }


import redress.abi.generic.*;
import redress.abi.generic.visitors.AbstractContainerVisitor;
import redress.memory.data.view.TableSeperator;
import redress.memory.data.*;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.LinkedList;
     * of the particular load command public classure plus anything that follows it that
     * is a part of the load command (i.e. section public classures, strings, etc.).  To
     * advance to the next load command the cmdsize can be added to the offset or
     * pointer of the current load command.  The cmdsize for 32-bit architectures
     * MUST be a multiple of 4 bytes and for 64-bit architectures MUST be a multiple
     * of 8 bytes (these are forever the maximum alignment of any load commands).
     * The padded bytes must be zero.  All tables in the object file must also
     * follow these rules so the file can be memory mapped.  Otherwise the pointers
     * to these tables will not work well or at all on some machines.  With all
     * padding zeroed like objects will compare byte for byte.
     */
    public class load_command extends AbstractLoadCommand {
        public DWord cmd = new DWord();
        public static final String cmdComment = "/* type of load command */";
        public DWord cmdsize = new DWord();
        public static final String cmdsizeComment = "/* total size of command in bytes */";

        public load_command(IStructure parent) {
            super(parent);
        }


        private boolean once = true;
        private LinkedList<IContainer> runOnce() {
            if(once){
                once=false;
                cmd.addComments(cmdComment);
                cmdsize.addComments(cmdsizeComment);
            }

// Path: src/main/java/redress/abi/generic/visitors/AbstractContainerVisitor.java
// public abstract class AbstractContainerVisitor implements IVisitor{
//     public boolean preVisit(){return true;}
//     public void postVisit(){}
//     public void visit(Word in){}
//     public void visit(DWord in){}
//     public void visit(QWord in){}
//     public void visit(Text in){}
//     public void visit(Range in){}
//     public void visit(Loader.char16 in){}
// }
// 
// Path: src/main/java/redress/memory/data/view/TableSeperator.java
// public class TableSeperator implements IContainer {
//     private final String addressCell,typeCell,codeCell,commentCell;
//     private Color color;
// 
//     public TableSeperator(String addressCell,String typeCell,String codeCell,String commentCell,Color color){
//         this.addressCell = addressCell;
//         this.typeCell=typeCell;
//         this.codeCell=codeCell;
//         this.commentCell=commentCell;
//         this.color=color;
//     }
// 
//     public TableSeperator(String addressCell,String typeCell,String codeCell,String commentCell){
//         this(addressCell,typeCell,codeCell,commentCell,Color.rgba());
//     }
// 
//     public String getAddressCell(){
//         return addressCell;
//     }
// 
//     public String gettypeCell(){
//         return typeCell;
//     }
// 
//     public String getcodeCell(){
//         return codeCell;
//     }
// 
//     public String getcommentCell(){
//         return commentCell;
//     }
// 
//     public Color getColor(){
//         return color;
//     }
// 
//     @Override
//     public byte[] getContainer() {
//         return new byte[0];
//     }
// 
//     @Override
//     public ByteOrder getByteOrder() {
//         return ByteOrder.BIG_ENDIAN;
//     }
// 
//     @Override
//     public IContainer getNextSibling() {
//         return null;
//     }
// 
//     @Override
//     public IContainer getPreviousSibling() {
//         return null;
//     }
// 
//     @Override
//     public IStructure getParent() {
//         return null;
//     }
// 
//     @Override
//     public IContainer flipByteOrder() {
//         return null;
//     }
// 
//     @Override
//     public IContainer clone() {
//         return null;
//     }
// 
//     @Override
//     public void add(IContainer i) {
// 
//     }
// 
//     @Override
//     public void add(int i) {
// 
//     }
// 
//     @Override
//     public void subtract(IContainer i) {
// 
//     }
// 
//     @Override
//     public void subtract(int i) {
// 
//     }
// 
//     @Override
//     public void accept(AbstractContainerVisitor visitor) {
// 
//     }
// }


// Path: src/main/java/redress/abi/mach/Loader.java
import redress.abi.generic.*;
import redress.abi.generic.visitors.AbstractContainerVisitor;
import redress.memory.data.view.TableSeperator;
import redress.memory.data.*;
import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.LinkedList;

     * of the particular load command public classure plus anything that follows it that
     * is a part of the load command (i.e. section public classures, strings, etc.).  To
     * advance to the next load command the cmdsize can be added to the offset or
     * pointer of the current load command.  The cmdsize for 32-bit architectures
     * MUST be a multiple of 4 bytes and for 64-bit architectures MUST be a multiple
     * of 8 bytes (these are forever the maximum alignment of any load commands).
     * The padded bytes must be zero.  All tables in the object file must also
     * follow these rules so the file can be memory mapped.  Otherwise the pointers
     * to these tables will not work well or at all on some machines.  With all
     * padding zeroed like objects will compare byte for byte.
     */
    public class load_command extends AbstractLoadCommand {
        public DWord cmd = new DWord();
        public static final String cmdComment = "/* type of load command */";
        public DWord cmdsize = new DWord();
        public static final String cmdsizeComment = "/* total size of command in bytes */";

        public load_command(IStructure parent) {
            super(parent);
        }


        private boolean once = true;
        private LinkedList<IContainer> runOnce() {
            if(once){
                once=false;
                cmd.addComments(cmdComment);
                cmdsize.addComments(cmdsizeComment);
            }

                TableSeperator s = new TableSeperator("load_command","","","");