The purpose of ResolvedJavaMethod.hasBytecodes() is to inform the caller whether the receiver has bytecodes available (via ResolvedJavaMethod.getCode()) that implement the semantics of the represented method. In HotSpot, this is equivalent to the method being non-native and non-abstract. However, in SVM, bytecodes can be provided/generated for methods based on annotations. As such, the implementation of hasBytecodes() should be implemented purely in terms of whether bytecodes are available, not in terms of properties that imply the existence of bytecodes for a specific VM context.