# File lib/eui.rb, line 317
    def to_ipv6(cidr, options=nil)
        known_args = [:Short, :Objectify]
        objectify = false
        short = false

        if ( !cidr.kind_of?(NetAddr::CIDR) )
            begin
                cidr = NetAddr::CIDR.create(cidr)
            rescue Exception => error
                raise ArgumentError, "CIDR raised the following errors: #{error}"
            end
        elsif (cidr.kind_of?(NetAddr::CIDRv4)  )
            raise ArgumentError, "Expected CIDRv6, but #{cidr.class} provided."
        end

        if (cidr.bits > 64)
            raise ValidationError, "Prefix length of provided CIDR must be /64 or less but was #{cidr.netmask}."
        end

        if (options)
            if (!options.kind_of? Hash)
                raise ArgumentError, "Expected Hash, but #{options.class} provided."
            end
            NetAddr.validate_args(options.keys,known_args)

            if (options.has_key?(:Objectify) && options[:Objectify] == true)
                objectify = true
            end

            if (options.has_key?(:Short) && options[:Short] == true)
                short = true
            end
        end

        # get integer equiv of addr. conver eui48 to eui64 if needed
        if ( self.kind_of?(NetAddr::EUI48) )
            eui_i = self.to_eui64.to_i
        else
            eui_i = self.to_i
        end
      
        # toggle u/l bit
        eui_i = eui_i ^ 0x0200000000000000

        # create ipv6 address
        ipv6 = cidr.to_i | eui_i

        if (!objectify)
            ipv6 = NetAddr.i_to_ip(ipv6, :Version => 6)
            ipv6 = NetAddr.shorten(ipv6) if (short)
        else
            ipv6 = NetAddr::CIDRv6.new(ipv6)
        end

        return(ipv6)
    end