コード例 #1
0
def createNativePointMatchesClass(classloader=None):
	# Class my/PointMatchesFast
  cw = ClassWriter(0)
  
  cw.visit(52, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, "my/PointMatchesFast", None, "java/lang/Object", None)
  
  
  fv = cw.visitField(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "pointmatches", "Ljava/util/List;", "Ljava/util/List<Lmpicbg/models/PointMatch;>;", None)
  fv.visitEnd()
  
  
  mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "(Ljava/util/List;)V", "(Ljava/util/List<Lmpicbg/models/PointMatch;>;)V", None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/PointMatchesFast", "pointmatches", "Ljava/util/List;")
  mv.visitInsn(Opcodes.RETURN)
  mv.visitMaxs(2, 2)
  mv.visitEnd()
  
  for PM_method, C_method in (("fromFeatures", "matches"),
                              ("fromFeaturesScaleInvariant", "matchesScaleInvariant")):
    mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, PM_method, "(Ljava/util/List;Ljava/util/List;DD)Lmy/PointMatchesFast;", "(Ljava/util/List<Lmy/ConstellationFast;>;Ljava/util/List<Lmy/ConstellationFast;>;DD)Lmy/PointMatchesFast;", None)
    mv.visitCode()
    mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList")
    mv.visitInsn(Opcodes.DUP)
    mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V")
    mv.visitVarInsn(Opcodes.ASTORE, 6)
    mv.visitVarInsn(Opcodes.ALOAD, 0)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;")
    mv.visitVarInsn(Opcodes.ASTORE, 7)
    l0 = Label()
    mv.visitLabel(l0)
    mv.visitFrame(Opcodes.F_APPEND,2, ["java/util/List", "java/util/Iterator"], 0, None)
    mv.visitVarInsn(Opcodes.ALOAD, 7)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z")
    l1 = Label()
    mv.visitJumpInsn(Opcodes.IFEQ, l1)
    mv.visitVarInsn(Opcodes.ALOAD, 7)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;")
    mv.visitTypeInsn(Opcodes.CHECKCAST, "my/ConstellationFast")
    mv.visitVarInsn(Opcodes.ASTORE, 8)
    mv.visitVarInsn(Opcodes.ALOAD, 1)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;")
    mv.visitVarInsn(Opcodes.ASTORE, 9)
    l2 = Label()
    mv.visitLabel(l2)
    mv.visitFrame(Opcodes.F_APPEND,2, ["my/ConstellationFast", "java/util/Iterator"], 0, None)
    mv.visitVarInsn(Opcodes.ALOAD, 9)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z")
    l3 = Label()
    mv.visitJumpInsn(Opcodes.IFEQ, l3)
    mv.visitVarInsn(Opcodes.ALOAD, 9)
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;")
    mv.visitTypeInsn(Opcodes.CHECKCAST, "my/ConstellationFast")
    mv.visitVarInsn(Opcodes.ASTORE, 10)
    mv.visitVarInsn(Opcodes.ALOAD, 8)
    mv.visitVarInsn(Opcodes.ALOAD, 10)
    mv.visitVarInsn(Opcodes.DLOAD, 2)
    mv.visitVarInsn(Opcodes.DLOAD, 4)
    mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "my/ConstellationFast", C_method, "(Lmy/ConstellationFast;DD)Z")
    l4 = Label()
    mv.visitJumpInsn(Opcodes.IFEQ, l4)
    mv.visitVarInsn(Opcodes.ALOAD, 6)
    mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/PointMatch")
    mv.visitInsn(Opcodes.DUP)
    mv.visitVarInsn(Opcodes.ALOAD, 8)
    mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
    mv.visitVarInsn(Opcodes.ALOAD, 10)
    mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
    mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/PointMatch", "<init>", "(Lmpicbg/models/Point;Lmpicbg/models/Point;)V")
    mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z")
    mv.visitInsn(Opcodes.POP)
    mv.visitLabel(l4)
    mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
    mv.visitJumpInsn(Opcodes.GOTO, l2)
    mv.visitLabel(l3)
    mv.visitFrame(Opcodes.F_CHOP,2, None, 0, None)
    mv.visitJumpInsn(Opcodes.GOTO, l0)
    mv.visitLabel(l1)
    mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
    mv.visitTypeInsn(Opcodes.NEW, "my/PointMatchesFast")
    mv.visitInsn(Opcodes.DUP)
    mv.visitVarInsn(Opcodes.ALOAD, 6)
    mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "my/PointMatchesFast", "<init>", "(Ljava/util/List;)V")
    mv.visitInsn(Opcodes.ARETURN)
    mv.visitMaxs(6, 11)
    mv.visitEnd()
  
  
  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "fromNearbyFeatures", "(DLjava/util/List;Ljava/util/List;DD)Lmy/PointMatchesFast;", "(DLjava/util/List<Lmy/ConstellationFast;>;Ljava/util/List<Lmy/ConstellationFast;>;DD)Lmy/PointMatchesFast;", None)
  mv.visitCode()
  mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList")
  mv.visitInsn(Opcodes.DUP)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V")
  mv.visitVarInsn(Opcodes.ASTORE, 8)
  mv.visitVarInsn(Opcodes.ALOAD, 3)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;")
  mv.visitVarInsn(Opcodes.ASTORE, 9)
  l0 = Label()
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_APPEND,2, ["java/util/List", "java/util/Iterator"], 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z")
  l1 = Label()
  mv.visitJumpInsn(Opcodes.IFEQ, l1)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "my/ConstellationFast")
  mv.visitVarInsn(Opcodes.ASTORE, 10)
  mv.visitVarInsn(Opcodes.ALOAD, 8)
  mv.visitVarInsn(Opcodes.ALOAD, 10)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D")
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "net/imglib2/RealPoint", "wrap", "([D)Lnet/imglib2/RealPoint;")
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z")
  mv.visitInsn(Opcodes.POP)
  mv.visitJumpInsn(Opcodes.GOTO, l0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitTypeInsn(Opcodes.NEW, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree")
  mv.visitInsn(Opcodes.DUP)
  mv.visitTypeInsn(Opcodes.NEW, "net/imglib2/KDTree")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 3)
  mv.visitVarInsn(Opcodes.ALOAD, 8)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "net/imglib2/KDTree", "<init>", "(Ljava/util/List;Ljava/util/List;)V")
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "<init>", "(Lnet/imglib2/KDTree;)V")
  mv.visitVarInsn(Opcodes.ASTORE, 9)
  mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList")
  mv.visitInsn(Opcodes.DUP)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V")
  mv.visitVarInsn(Opcodes.ASTORE, 10)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;")
  mv.visitVarInsn(Opcodes.ASTORE, 11)
  l2 = Label()
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_APPEND,3, ["net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "java/util/List", "java/util/Iterator"], 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 11)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z")
  l3 = Label()
  mv.visitJumpInsn(Opcodes.IFEQ, l3)
  mv.visitVarInsn(Opcodes.ALOAD, 11)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "my/ConstellationFast")
  mv.visitVarInsn(Opcodes.ASTORE, 12)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitVarInsn(Opcodes.ALOAD, 12)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D")
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "net/imglib2/RealPoint", "wrap", "([D)Lnet/imglib2/RealPoint;")
  mv.visitVarInsn(Opcodes.DLOAD, 0)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "search", "(Lnet/imglib2/RealLocalizable;DZ)V")
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 13)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "numNeighbors", "()I")
  mv.visitVarInsn(Opcodes.ISTORE, 14)
  l4 = Label()
  mv.visitLabel(l4)
  mv.visitFrame(Opcodes.F_APPEND,3, ["my/ConstellationFast", Opcodes.INTEGER, Opcodes.INTEGER], 0, None)
  mv.visitVarInsn(Opcodes.ILOAD, 13)
  mv.visitVarInsn(Opcodes.ILOAD, 14)
  l5 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l5)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitVarInsn(Opcodes.ILOAD, 13)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "getSampler", "(I)Lnet/imglib2/Sampler;")
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/Sampler", "get", "()Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "my/ConstellationFast")
  mv.visitVarInsn(Opcodes.ASTORE, 15)
  mv.visitVarInsn(Opcodes.ALOAD, 12)
  mv.visitVarInsn(Opcodes.ALOAD, 15)
  mv.visitVarInsn(Opcodes.DLOAD, 4)
  mv.visitVarInsn(Opcodes.DLOAD, 6)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "my/ConstellationFast", "matches", "(Lmy/ConstellationFast;DD)Z")
  l6 = Label()
  mv.visitJumpInsn(Opcodes.IFEQ, l6)
  mv.visitVarInsn(Opcodes.ALOAD, 10)
  mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/PointMatch")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 12)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitVarInsn(Opcodes.ALOAD, 15)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/PointMatch", "<init>", "(Lmpicbg/models/Point;Lmpicbg/models/Point;)V")
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z")
  mv.visitInsn(Opcodes.POP)
  mv.visitLabel(l6)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitIincInsn(13, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l4)
  mv.visitLabel(l5)
  mv.visitFrame(Opcodes.F_CHOP,3, None, 0, None)
  mv.visitJumpInsn(Opcodes.GOTO, l2)
  mv.visitLabel(l3)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitTypeInsn(Opcodes.NEW, "my/PointMatchesFast")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 10)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "my/PointMatchesFast", "<init>", "(Ljava/util/List;)V")
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(6, 16)
  mv.visitEnd()
  
  
  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "toRows", "()[[D", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/PointMatchesFast", "pointmatches", "Ljava/util/List;")
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", True)
  mv.visitTypeInsn(Opcodes.CHECKCAST, "mpicbg/models/PointMatch")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP1", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  mv.visitVarInsn(Opcodes.ISTORE, 1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/PointMatchesFast", "pointmatches", "Ljava/util/List;")
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "size", "()I", True)
  mv.visitVarInsn(Opcodes.ILOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 1)
  mv.visitInsn(Opcodes.IADD)
  mv.visitMultiANewArrayInsn("[[D", 2)
  mv.visitVarInsn(Opcodes.ASTORE, 2)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 3)
  l0 = Label()
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_APPEND,3, [Opcodes.INTEGER, "[[D", Opcodes.INTEGER], 0, None)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/PointMatchesFast", "pointmatches", "Ljava/util/List;")
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "size", "()I", True)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/PointMatchesFast", "pointmatches", "Ljava/util/List;")
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", True)
  mv.visitTypeInsn(Opcodes.CHECKCAST, "mpicbg/models/PointMatch")
  mv.visitVarInsn(Opcodes.ASTORE, 4)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP1", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitVarInsn(Opcodes.ASTORE, 5)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP2", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitVarInsn(Opcodes.ASTORE, 6)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 7)
  l2 = Label()
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_FULL, 8, ["my/PointMatchesFast", Opcodes.INTEGER, "[[D", Opcodes.INTEGER, "mpicbg/models/PointMatch", "[D", "[D", Opcodes.INTEGER], 0, [])
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitVarInsn(Opcodes.ILOAD, 1)
  l3 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l3)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitInsn(Opcodes.AALOAD)
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitVarInsn(Opcodes.ALOAD, 5)
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(7, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l2)
  mv.visitLabel(l3)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 7)
  l4 = Label()
  mv.visitLabel(l4)
  mv.visitFrame(Opcodes.F_APPEND,1, [Opcodes.INTEGER], 0, None)
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitVarInsn(Opcodes.ILOAD, 1)
  l5 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l5)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitInsn(Opcodes.AALOAD)
  mv.visitVarInsn(Opcodes.ILOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitInsn(Opcodes.IADD)
  mv.visitVarInsn(Opcodes.ALOAD, 6)
  mv.visitVarInsn(Opcodes.ILOAD, 7)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(7, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l4)
  mv.visitLabel(l5)
  mv.visitFrame(Opcodes.F_FULL, 4, ["my/PointMatchesFast", Opcodes.INTEGER, "[[D", Opcodes.INTEGER], 0, [])
  mv.visitIincInsn(3, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(4, 8)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "fromRows", "(Ljava/util/Iterator;)Lmy/PointMatchesFast;", "(Ljava/util/Iterator<Ljava/util/List<Ljava/lang/String;>;>;)Lmy/PointMatchesFast;", None)
  mv.visitCode()
  mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList")
  mv.visitInsn(Opcodes.DUP)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V", False)
  mv.visitVarInsn(Opcodes.ASTORE, 1)
  l0 = Label()
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_APPEND,1, ["java/util/List"], 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", True)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.IFEQ, l1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", True)
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/util/List")
  mv.visitVarInsn(Opcodes.ASTORE, 2)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "size", "()I", True)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitInsn(Opcodes.IDIV)
  mv.visitVarInsn(Opcodes.ISTORE, 3)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitVarInsn(Opcodes.ASTORE, 4)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitVarInsn(Opcodes.ASTORE, 5)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 6)
  l2 = Label()
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_FULL, 7, ["java/util/Iterator", "java/util/List", "java/util/List", Opcodes.INTEGER, "[D", "[D", Opcodes.INTEGER], 0, [])
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  l3 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l3)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", True)
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/String")
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "parseDouble", "(Ljava/lang/String;)D", False)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(6, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l2)
  mv.visitLabel(l3)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 6)
  l4 = Label()
  mv.visitLabel(l4)
  mv.visitFrame(Opcodes.F_APPEND,1, [Opcodes.INTEGER], 0, None)
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  l5 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l5)
  mv.visitVarInsn(Opcodes.ALOAD, 5)
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitVarInsn(Opcodes.ILOAD, 3)
  mv.visitVarInsn(Opcodes.ILOAD, 6)
  mv.visitInsn(Opcodes.IADD)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", True)
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/String")
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Double", "parseDouble", "(Ljava/lang/String;)D", False)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(6, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l4)
  mv.visitLabel(l5)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/PointMatch")
  mv.visitInsn(Opcodes.DUP)
  mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/Point")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/Point", "<init>", "([D)V", False)
  mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/Point")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 5)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/Point", "<init>", "([D)V", False)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/PointMatch", "<init>", "(Lmpicbg/models/Point;Lmpicbg/models/Point;)V", False)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z", True)
  mv.visitInsn(Opcodes.POP)
  mv.visitJumpInsn(Opcodes.GOTO, l0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_FULL, 2, ["java/util/Iterator", "java/util/List"], 0, [])
  mv.visitTypeInsn(Opcodes.NEW, "my/PointMatchesFast")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "my/PointMatchesFast", "<init>", "(Ljava/util/List;)V", False)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(7, 7)
  mv.visitEnd()

  
  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "csvHeader", "(Lmpicbg/models/PointMatch;)[Ljava/lang/String;", None, None)
  mv.visitCode()
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP1", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  l0 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPNE, l0)
  mv.visitIntInsn(Opcodes.BIPUSH, 6)
  mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String")
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitLdcInsn("x1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitLdcInsn("y1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitLdcInsn("z1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitLdcInsn("x2")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_4)
  mv.visitLdcInsn("y2")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_5)
  mv.visitLdcInsn("z2")
  mv.visitInsn(Opcodes.AASTORE)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.GOTO, l1)
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_4)
  mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String")
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitLdcInsn("x1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitLdcInsn("y1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitLdcInsn("x2")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitLdcInsn("y2")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_SAME1, 0, None, 1, ["[Ljava/lang/String;"])
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(4, 1)
  mv.visitEnd()
  
  
  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "asRow", "(Lmpicbg/models/PointMatch;)[D", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP1", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitVarInsn(Opcodes.ASTORE, 1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/PointMatch", "getP2", "()Lmpicbg/models/Point;", False)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D", False)
  mv.visitVarInsn(Opcodes.ASTORE, 2)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  mv.visitInsn(Opcodes.IADD)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitVarInsn(Opcodes.ASTORE, 3)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 4)
  l0 = Label()
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_FULL, 5, ["mpicbg/models/PointMatch", "[D", "[D", "[D", Opcodes.INTEGER], 0, [])
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l1)
  mv.visitVarInsn(Opcodes.ALOAD, 3)
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(4, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 4)
  l2 = Label()
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_APPEND,1, [Opcodes.INTEGER], 0, None)
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  l3 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPGE, l3)
  mv.visitVarInsn(Opcodes.ALOAD, 3)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ARRAYLENGTH)
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitInsn(Opcodes.IADD)
  mv.visitVarInsn(Opcodes.ALOAD, 2)
  mv.visitVarInsn(Opcodes.ILOAD, 4)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitIincInsn(4, 1)
  mv.visitJumpInsn(Opcodes.GOTO, l2)
  mv.visitLabel(l3)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 3)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(4, 5)
  mv.visitEnd()

  
  cw.visitEnd()

  if not classloader:
    classloader = CustomClassLoader()
  return classloader.defineClass("my/PointMatchesFast", cw.toByteArray())
コード例 #2
0
def createNativeConstellationClass(classloader=None):
  """ A Constellation class implemented natively in java using the ASM library. """
  cw = ClassWriter(0)

  cw.visit(52, Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, "my/ConstellationFast", None, "java/lang/Object", None)


  fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL, "angle", "D", None, None)
  fv.visitEnd()


  fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL, "len1", "D", None, None)
  fv.visitEnd()


  fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL, "len2", "D", None, None)
  fv.visitEnd()


  fv = cw.visitField(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "position", "Lmpicbg/models/Point;", None, None)
  fv.visitEnd()

  fv = cw.visitField(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL, "len_ratio", "D", None, None)
  fv.visitEnd()

  mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "(DDD[D)V", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitVarInsn(Opcodes.DLOAD, 1)
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitVarInsn(Opcodes.DLOAD, 3)
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/ConstellationFast", "len1", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitVarInsn(Opcodes.DLOAD, 5)
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/ConstellationFast", "len2", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitVarInsn(Opcodes.DLOAD, 3)
  mv.visitVarInsn(Opcodes.DLOAD, 3)
  mv.visitVarInsn(Opcodes.DLOAD, 5)
  mv.visitInsn(Opcodes.DADD)
  mv.visitInsn(Opcodes.DDIV)
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/ConstellationFast", "len_ratio", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitTypeInsn(Opcodes.NEW, "mpicbg/models/Point")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 7)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "mpicbg/models/Point", "<init>", "([D)V")
  mv.visitFieldInsn(Opcodes.PUTFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitInsn(Opcodes.RETURN)
  mv.visitMaxs(7, 8)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "matches", "(Lmy/ConstellationFast;DD)Z", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitInsn(Opcodes.DSUB)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D")
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitInsn(Opcodes.DCMPG)
  l0 = Label()
  mv.visitJumpInsn(Opcodes.IFGE, l0)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len1", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len1", "D")
  mv.visitInsn(Opcodes.DSUB)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len2", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len2", "D")
  mv.visitInsn(Opcodes.DSUB)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D")
  mv.visitInsn(Opcodes.DADD)
  mv.visitVarInsn(Opcodes.DLOAD, 4)
  mv.visitInsn(Opcodes.DCMPG)
  mv.visitJumpInsn(Opcodes.IFGE, l0)
  mv.visitInsn(Opcodes.ICONST_1)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.GOTO, l1)
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_SAME1, 0, None, 1, [Opcodes.INTEGER])
  mv.visitInsn(Opcodes.IRETURN)
  mv.visitMaxs(6, 6)
  mv.visitEnd()

  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "matchesScaleInvariant", "(Lmy/ConstellationFast;DD)Z", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitInsn(Opcodes.DSUB)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D")
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitInsn(Opcodes.DCMPG)
  l0 = Label()
  mv.visitJumpInsn(Opcodes.IFGE, l0)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len_ratio", "D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len_ratio", "D")
  mv.visitInsn(Opcodes.DSUB)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "abs", "(D)D")
  mv.visitVarInsn(Opcodes.DLOAD, 4)
  mv.visitInsn(Opcodes.DCMPG)
  mv.visitJumpInsn(Opcodes.IFGE, l0)
  mv.visitInsn(Opcodes.ICONST_1)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.GOTO, l1)
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_SAME1, 0, None, 1, [Opcodes.INTEGER])
  mv.visitInsn(Opcodes.IRETURN)
  mv.visitMaxs(4, 6)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "computeAngle", "(DDDDDDDD)D", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.DLOAD, 6)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "sqrt", "(D)D")
  mv.visitVarInsn(Opcodes.DSTORE, 16)
  mv.visitVarInsn(Opcodes.DLOAD, 14)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "sqrt", "(D)D")
  mv.visitVarInsn(Opcodes.DSTORE, 18)
  mv.visitVarInsn(Opcodes.DLOAD, 0)
  mv.visitVarInsn(Opcodes.DLOAD, 8)
  mv.visitInsn(Opcodes.DMUL)
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitVarInsn(Opcodes.DLOAD, 10)
  mv.visitInsn(Opcodes.DMUL)
  mv.visitInsn(Opcodes.DADD)
  mv.visitVarInsn(Opcodes.DLOAD, 4)
  mv.visitVarInsn(Opcodes.DLOAD, 12)
  mv.visitInsn(Opcodes.DMUL)
  mv.visitInsn(Opcodes.DADD)
  mv.visitVarInsn(Opcodes.DSTORE, 20)
  mv.visitVarInsn(Opcodes.DLOAD, 20)
  mv.visitVarInsn(Opcodes.DLOAD, 16)
  mv.visitVarInsn(Opcodes.DLOAD, 18)
  mv.visitInsn(Opcodes.DMUL)
  mv.visitInsn(Opcodes.DDIV)
  mv.visitVarInsn(Opcodes.DSTORE, 22)
  mv.visitVarInsn(Opcodes.DLOAD, 22)
  mv.visitInsn(Opcodes.DCONST_1)
  mv.visitInsn(Opcodes.DCMPL)
  l0 = Label()
  mv.visitJumpInsn(Opcodes.IFLE, l0)
  mv.visitInsn(Opcodes.DCONST_1)
  l1 = Label()
  mv.visitJumpInsn(Opcodes.GOTO, l1)
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_FULL, 12, [Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE], 0, [])
  mv.visitVarInsn(Opcodes.DLOAD, 22)
  mv.visitLdcInsn(Double("-1.0"))
  mv.visitInsn(Opcodes.DCMPG)
  l2 = Label()
  mv.visitJumpInsn(Opcodes.IFGE, l2)
  mv.visitLdcInsn(Double("-1.0"))
  mv.visitJumpInsn(Opcodes.GOTO, l1)
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitVarInsn(Opcodes.DLOAD, 22)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_SAME1, 0, None, 1, [Opcodes.DOUBLE])
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "acos", "(D)D")
  mv.visitInsn(Opcodes.DRETURN)
  mv.visitMaxs(6, 24)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "fromSearch", "(Lnet/imglib2/RealLocalizable;Lnet/imglib2/RealLocalizable;DLnet/imglib2/RealLocalizable;D)Lmy/ConstellationFast;", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DSTORE, 7)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DSTORE, 9)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DSTORE, 11)
  mv.visitTypeInsn(Opcodes.NEW, "my/ConstellationFast")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 7)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 9)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 11)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 7)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 9)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.ALOAD, 4)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "net/imglib2/RealLocalizable", "getFloatPosition", "(I)F")
  mv.visitInsn(Opcodes.F2D)
  mv.visitVarInsn(Opcodes.DLOAD, 11)
  mv.visitInsn(Opcodes.DSUB)
  mv.visitVarInsn(Opcodes.DLOAD, 5)
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "my/ConstellationFast", "computeAngle", "(DDDDDDDD)D")
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitVarInsn(Opcodes.DLOAD, 5)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.DLOAD, 7)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitVarInsn(Opcodes.DLOAD, 9)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitVarInsn(Opcodes.DLOAD, 11)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "my/ConstellationFast", "<init>", "(DDD[D)V")
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(18, 13)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "fromRow", "(Ljava/util/List;)Lmy/ConstellationFast;", "(Ljava/util/List<Ljava/lang/Double;>;)Lmy/ConstellationFast;", None)
  mv.visitCode()
  mv.visitTypeInsn(Opcodes.NEW, "my/ConstellationFast")
  mv.visitInsn(Opcodes.DUP)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_4)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitInsn(Opcodes.ICONST_5)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "java/lang/Double")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Double", "doubleValue", "()D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "my/ConstellationFast", "<init>", "(DDD[D)V")
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(13, 1)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL, "asRow", "()[D", None, None)
  mv.visitCode()
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "position", "Lmpicbg/models/Point;")
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "mpicbg/models/Point", "getW", "()[D")
  mv.visitVarInsn(Opcodes.ASTORE, 1)
  mv.visitIntInsn(Opcodes.BIPUSH, 6)
  mv.visitIntInsn(Opcodes.NEWARRAY, Opcodes.T_DOUBLE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len1", "D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "len2", "D")
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_4)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_5)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitInsn(Opcodes.DALOAD)
  mv.visitInsn(Opcodes.DASTORE)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(5, 2)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "csvHeader", "()[Ljava/lang/String;", None, None)
  mv.visitCode()
  mv.visitIntInsn(Opcodes.BIPUSH, 6)
  mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/String")
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitLdcInsn("angle")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitLdcInsn("len1")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitLdcInsn("len2")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_3)
  mv.visitLdcInsn("x")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_4)
  mv.visitLdcInsn("y")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.DUP)
  mv.visitInsn(Opcodes.ICONST_5)
  mv.visitLdcInsn("z")
  mv.visitInsn(Opcodes.AASTORE)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(4, 0)
  mv.visitEnd()


  mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_STATIC, "extractFeatures", "(Ljava/util/List;Lnet/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree;DDD)Ljava/util/List;", "(Ljava/util/List<Lnet/imglib2/RealLocalizable;>;Lnet/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree<Lnet/imglib2/RealLocalizable;>;DDD)Ljava/util/List<Lmy/ConstellationFast;>;", None)
  mv.visitCode()
  mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList")
  mv.visitInsn(Opcodes.DUP)
  mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", "<init>", "()V")
  mv.visitVarInsn(Opcodes.ASTORE, 8)
  mv.visitVarInsn(Opcodes.ALOAD, 0)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;")
  mv.visitVarInsn(Opcodes.ASTORE, 9)
  l0 = Label()
  mv.visitLabel(l0)
  mv.visitFrame(Opcodes.F_APPEND,2, ["java/util/List", "java/util/Iterator"], 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z")
  l1 = Label()
  mv.visitJumpInsn(Opcodes.IFEQ, l1)
  mv.visitVarInsn(Opcodes.ALOAD, 9)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;")
  mv.visitTypeInsn(Opcodes.CHECKCAST, "net/imglib2/RealLocalizable")
  mv.visitVarInsn(Opcodes.ASTORE, 10)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ALOAD, 10)
  mv.visitVarInsn(Opcodes.DLOAD, 2)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "search", "(Lnet/imglib2/RealLocalizable;DZ)V")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "numNeighbors", "()I")
  mv.visitVarInsn(Opcodes.ISTORE, 11)
  mv.visitVarInsn(Opcodes.ILOAD, 11)
  mv.visitInsn(Opcodes.ICONST_2)
  l2 = Label()
  mv.visitJumpInsn(Opcodes.IF_ICMPLE, l2)
  mv.visitInsn(Opcodes.ICONST_0)
  mv.visitVarInsn(Opcodes.ISTORE, 12)
  mv.visitVarInsn(Opcodes.ILOAD, 11)
  mv.visitInsn(Opcodes.ICONST_2)
  mv.visitInsn(Opcodes.ISUB)
  mv.visitVarInsn(Opcodes.ISTORE, 13)
  mv.visitVarInsn(Opcodes.ILOAD, 11)
  mv.visitInsn(Opcodes.ICONST_1)
  mv.visitInsn(Opcodes.ISUB)
  mv.visitVarInsn(Opcodes.ISTORE, 14)
  l3 = Label()
  mv.visitLabel(l3)
  mv.visitFrame(Opcodes.F_FULL, 12, ["java/util/List", "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, "java/util/List", "java/util/Iterator", "net/imglib2/RealLocalizable", Opcodes.INTEGER, Opcodes.INTEGER, Opcodes.INTEGER, Opcodes.INTEGER], 0, [])
  mv.visitVarInsn(Opcodes.ILOAD, 13)
  mv.visitJumpInsn(Opcodes.IFLE, l2)
  mv.visitVarInsn(Opcodes.DLOAD, 6)
  mv.visitVarInsn(Opcodes.ILOAD, 12)
  mv.visitInsn(Opcodes.I2D)
  mv.visitInsn(Opcodes.DCMPL)
  l4 = Label()
  mv.visitJumpInsn(Opcodes.IFNE, l4)
  mv.visitJumpInsn(Opcodes.GOTO, l2)
  mv.visitLabel(l4)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 10)
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 13)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "getPosition", "(I)Lnet/imglib2/RealLocalizable;")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 13)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "getSquareDistance", "(I)D")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 14)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "getPosition", "(I)Lnet/imglib2/RealLocalizable;")
  mv.visitVarInsn(Opcodes.ALOAD, 1)
  mv.visitVarInsn(Opcodes.ILOAD, 14)
  mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", "getSquareDistance", "(I)D")
  mv.visitMethodInsn(Opcodes.INVOKESTATIC, "my/ConstellationFast", "fromSearch", "(Lnet/imglib2/RealLocalizable;Lnet/imglib2/RealLocalizable;DLnet/imglib2/RealLocalizable;D)Lmy/ConstellationFast;")
  mv.visitVarInsn(Opcodes.ASTORE, 15)
  mv.visitVarInsn(Opcodes.ALOAD, 15)
  mv.visitFieldInsn(Opcodes.GETFIELD, "my/ConstellationFast", "angle", "D")
  mv.visitVarInsn(Opcodes.DLOAD, 4)
  mv.visitInsn(Opcodes.DCMPL)
  l5 = Label()
  mv.visitJumpInsn(Opcodes.IFLT, l5)
  mv.visitIincInsn(12, 1)
  mv.visitVarInsn(Opcodes.ALOAD, 8)
  mv.visitVarInsn(Opcodes.ALOAD, 15)
  mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", "add", "(Ljava/lang/Object;)Z")
  mv.visitInsn(Opcodes.POP)
  mv.visitLabel(l5)
  mv.visitFrame(Opcodes.F_SAME, 0, None, 0, None)
  mv.visitIincInsn(13, -1)
  mv.visitIincInsn(14, -1)
  mv.visitJumpInsn(Opcodes.GOTO, l3)
  mv.visitLabel(l2)
  mv.visitFrame(Opcodes.F_FULL, 7, ["java/util/List", "net/imglib2/neighborsearch/RadiusNeighborSearchOnKDTree", Opcodes.DOUBLE, Opcodes.DOUBLE, Opcodes.DOUBLE, "java/util/List", "java/util/Iterator"], 0, [])
  mv.visitJumpInsn(Opcodes.GOTO, l0)
  mv.visitLabel(l1)
  mv.visitFrame(Opcodes.F_CHOP,1, None, 0, None)
  mv.visitVarInsn(Opcodes.ALOAD, 8)
  mv.visitInsn(Opcodes.ARETURN)
  mv.visitMaxs(7, 16)
  mv.visitEnd()

  cw.visitEnd()

  if not classloader:
    classloader = CustomClassLoader()
  return classloader.defineClass("my/ConstellationFast", cw.toByteArray())