// Path: library/src/main/java/com/jwoolston/android/uvc/interfaces/Descriptor.java
// public static enum Protocol {
//     PC_PROTOCOL_UNDEFINED(0x00),
//     PC_PROTOCOL_15(0x01);
// 
//     public final byte protocol;
// 
//     private Protocol(int protocol) {
//         this.protocol = (byte) (protocol & 0xFF);
//     }
// }


import com.jwoolston.android.uvc.interfaces.Descriptor.Protocol;
import timber.log.Timber;
            return null;
        } else {
            throw new IllegalArgumentException("The provided descriptor has an invalid function class: " + descriptor[bFunctionClass]);
        }
    }

    protected InterfaceAssociationDescriptor(byte[] descriptor) throws IllegalArgumentException {
        firstInterface = descriptor[bFirstInterface];
        interfaceCount = descriptor[bInterfaceCount];
        indexFunction = descriptor[iFunction];
    }

    public int getIndexFirstInterface() {
        return firstInterface;
    }

    public int getInterfaceCount() {
        return interfaceCount;
    }

    public int getIndexFunction() {
        return indexFunction;
    }

    public abstract void addInterface(UvcInterface uvcInterface);

    public abstract UvcInterface getInterface(int index);

    @Override
    public String toString() {
// Path: library/src/main/java/com/jwoolston/android/uvc/interfaces/Descriptor.java
// public static enum Protocol {
//     PC_PROTOCOL_UNDEFINED(0x00),
//     PC_PROTOCOL_15(0x01);
// 
//     public final byte protocol;
// 
//     private Protocol(int protocol) {
//         this.protocol = (byte) (protocol & 0xFF);
//     }
// }


// Path: library/src/main/java/com/jwoolston/android/uvc/interfaces/InterfaceAssociationDescriptor.java
import com.jwoolston.android.uvc.interfaces.Descriptor.Protocol;
import timber.log.Timber;

            return null;
        } else {
            throw new IllegalArgumentException("The provided descriptor has an invalid function class: " + descriptor[bFunctionClass]);
        }
    }

    protected InterfaceAssociationDescriptor(byte[] descriptor) throws IllegalArgumentException {
        firstInterface = descriptor[bFirstInterface];
        interfaceCount = descriptor[bInterfaceCount];
        indexFunction = descriptor[iFunction];
    }

    public int getIndexFirstInterface() {
        return firstInterface;
    }

    public int getInterfaceCount() {
        return interfaceCount;
    }

    public int getIndexFunction() {
        return indexFunction;
    }

    public abstract void addInterface(UvcInterface uvcInterface);

    public abstract UvcInterface getInterface(int index);

    @Override
    public String toString() {
        return "InterfaceAssociationDescriptor{" +