@@ -0,0 +1,1718 @@
+package com.op1.aiff;%0A%0Aimport com.op1.iff.Chunk;%0Aimport com.op1.iff.IffReader;%0Aimport com.op1.iff.types.ID;%0A%0Aimport java.io.IOException;%0A%0Apublic enum ChunkType %7B%0A%0A    COMMON(%22COMM%22, new CommonChunk.CommonChunkReader()),%0A    SOUND_DATA(%22SSND%22, new SoundDataChunk.SoundDataChunkReader()),%0A    MARKER(%22MARK%22, new MarkerChunk.MarkerChunkReader()),%0A    INSTRUMENT(%22INST%22, new InstrumentChunk.InstrumentChunkReader()),%0A    APPLICATION(%22APPL%22, new ApplicationChunk.ApplicationChunkReader());%0A%0A    // Here are some currently unsupported chunks that need fleshing out:%0A%0A    //COMMENT(%22COMT%22),%0A    //NAME(%22NAME%22),%0A    //AUTHOR(%22AUTH%22),%0A    //COPYRIGHT(%22(c) %22),%0A    //ANNOTATION(%22ANNO%22),%0A    //AUDIO_RECORDING(%22AESD%22),%0A    //MIDI_DATA(%22MIDI%22);%0A%0A    private final String name;%0A    private final ID id;%0A    private final ChunkReader chunkReader;%0A%0A    ChunkType(String name, ChunkReader chunkReader) %7B%0A        this.name = name;%0A        this.id = new ID(name.getBytes()); // TODO: charset%0A        this.chunkReader = chunkReader;%0A    %7D%0A%0A    public ID getId() %7B%0A        return id;%0A    %7D%0A%0A    public Chunk readChunk(IffReader reader) throws IOException %7B%0A        return chunkReader.readChunk(reader);%0A    %7D%0A%0A    public static ChunkType fromName(String name) %7B%0A        for (ChunkType chunkType : ChunkType.values()) %7B%0A            if (chunkType.name.equals(name)) %7B%0A                return chunkType;%0A            %7D%0A        %7D%0A        throw new IllegalArgumentException(%22Unrecognized chunk%22);%0A    %7D%0A%0A    public static boolean isKnownChunk(String name) %7B%0A        for (ChunkType chunkType : ChunkType.values()) %7B%0A            if (chunkType.name.equals(name)) %7B%0A                return true;%0A            %7D%0A        %7D%0A        return false;%0A    %7D%0A%7D%0A

Create ChunkType.java