public static DNSRecord Parse(ByteBuffer aBuffer) throws IOException {
    	DNSRecord record = null;
    	DNSEntry internalEntry = DNSEntry.Parse(aBuffer);
    	
    	int ttl = aBuffer.getInt();
    	int len = DNSEntry.getUnsignedShort(aBuffer);
    	assert(len != 0);
    	
    	switch(internalEntry._eType) {
    	case A:
    	case AAAA:
    		record = new Address();
    		break;
    	case CNAME:
    	case PTR:
    		record = new Pointer();
    		break;
    	case TXT:
            record = new Text();
            break;
        case SRV:
            record = new Service();
            break;
        case HINFO:
            // Maybe we should do something with those
            break;
        default :
            break;
    	}
    	
    	if(record != null) {
    		record._Entry = internalEntry;
    		record._iTTL = ttl;
    		record.parseInstance(aBuffer, len);
    	}
    	else
    		aBuffer.position(aBuffer.position() + len);
    	
    	return record;    	
    }