public static final WeaverStateInfo read(DataInputStream s, ISourceContext context) throws IOException {
public static final WeaverStateInfo read(VersionedDataInputStream s, ISourceContext context) throws IOException {
	public static final WeaverStateInfo read(DataInputStream s, ISourceContext context) throws IOException {		byte b = s.readByte();				boolean isReweavable = ((b&REWEAVABLE_BIT)!=0);		if (isReweavable) b=(byte) (b-REWEAVABLE_BIT);		boolean isReweavableCompressed = ((b&REWEAVABLE_COMPRESSION_BIT)!=0);		if (isReweavableCompressed) b=(byte) (b-REWEAVABLE_COMPRESSION_BIT);		switch(b) {			case UNTOUCHED:				throw new RuntimeException("unexpected UNWOVEN");			case WOVEN: 				return new WeaverStateInfo(Collections.EMPTY_LIST, true,isReweavable,isReweavableCompressed);			case EXTENDED:				int n = s.readShort();				List l = new ArrayList();				for (int i=0; i < n; i++) {					TypeX aspectType = TypeX.read(s);					ResolvedTypeMunger typeMunger = 						ResolvedTypeMunger.read(s, context);					l.add(new Entry(aspectType, typeMunger));				}			    WeaverStateInfo wsi = new WeaverStateInfo(l,false,isReweavable,isReweavableCompressed);			    readAnyReweavableData(wsi,s);				return wsi;		} 		throw new RuntimeException("bad WeaverState.Kind: " + b);	}